我试图从普通同步方法调用异步。
下面是我的例子。 Task taskA = Task.Factory.StartNew(async () => await SetRowsToList(ds_list.Tables[0].Rows));
Task.WaitAll(taskA);
lst_schemabase.count(); // should be 4k records. List<myClassFile> lst_schemabase
protected async Task<UInt32> SetRowsToList(DataRowCollection Rows)
{
List<Task<UInt32>> lst_tasks = new List<Task<uint>>();
foreach (DataRow row in Rows)
{
var task = Task.Factory.StartNew(() =>
{
lst_schemabase.Add(SetDBfromRow(row));
return (UInt32)0;
});
lst_tasks.Add(task);
}
await Task.WhenAll(lst_tasks);
return 0;
}
但是,我的lst_schemabase有时会检索20条记录,有时会检索800条++记录。无法获得正确的记录/等待所有完成。我做错了什么?