为什么有些任务没有被执行?

Why are some of task are not being executed?

我在任务中的 运行 下方有此代码。我希望我的程序响应更快,但是当我尝试 运行 下面的代码时。部分任务顺利完成。

   private async void SaveRecordToDB()
    {
        List<Task> listOfTask = new List<Task>();
        for (int i = 0; i <= 15; i++)
        {
            listOfTask.Add(Task.Run(() => IterateRowsSaving(i)));

        }

        await Task.WhenAll(listOfTask);
    }

    private bool IterateRowsSaving(int index)
    {
        bool Success = true;
        //Save to Database
        //Assuming that every iteration has a long operation running
        return Success;
    }

我可能做错了什么?

你这里有两个潜在的问题:

  1. async void 这意味着 即发即忘 政策;更好地使用 async Task
  2. 您在任务中使用循环变量 i。请注意,i == 15 在所有任务之后 开始了。
    //DONE: async Task instead of async void 
    private async Task SaveRecordToDB()
    {
        List<Task> listOfTask = new List<Task>();

        for (int i = 0; i <= 15; i++)
        {
            // Each task should depend on its own local variable
            int index = i;

            listOfTask.Add(Task.Run(() => IterateRowsSaving(index)));
        }

        await Task.WhenAll(listOfTask);
    }