为什么有些任务没有被执行?
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;
}
我可能做错了什么?
你这里有两个潜在的问题:
async void
这意味着 即发即忘 政策;更好地使用 async Task
- 您在任务中使用循环变量
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);
}
我在任务中的 运行 下方有此代码。我希望我的程序响应更快,但是当我尝试 运行 下面的代码时。部分任务顺利完成。
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;
}
我可能做错了什么?
你这里有两个潜在的问题:
async void
这意味着 即发即忘 政策;更好地使用async Task
- 您在任务中使用循环变量
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);
}