我最近有一个关于此的问题,但是我现在收到一个错误,即“无法将 void 分配给隐式类型的局部变量”。下划线部分是var Results的声明。
我想做的就是同时发送这 3 种不同的方法,因为它们都是数据工作,需要一些时间。我认为异步发送它们然后等待这 3 个部分的返回效果最好。每个方法都会返回一个数据表,我只是想访问返回的内容。
谁能给我指出正确的方向吗?
async void Main(string[] args)
{
// need instance, virtual methods, may add overrides.
SchoolData CSD = new SchoolData();
FData FD = new FData();
GiftData GD = new GiftData();
List<Task> tasks = new List<Task>();
tasks.Add(Task.Run(() => CSD.getSchool()));
tasks.Add(Task.Run(() => FD.getF()));
tasks.Add(Task.Run(() => GD.getGift()));
var Results = await Task.WhenAll(tasks);
}
最佳答案
您会想要一个 List<Task<DataTable>>
因为你的任务都计算 DataTables
。因为它是你存储(非通用)Task
对象,这意味着它们不代表任何结果。
您还需要将代码移至 Main
之外的另一个方法中因为它不能被标记为 async
.
关于c# multithreading发送3个不同的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30201207/