从普通方法调用异步等待

时间:2014-07-11 12:16:13

标签: c# async-await

我试图从普通同步方法调用异步。

下面是我的例子。

    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条++记录。无法获得正确的记录/等待所有完成。我做错了什么?

0 个答案:

没有答案