c# multithreading发送3个不同的线程

标签 c# .net multithreading asynchronous

我最近有一个关于此的问题,但是我现在收到一个错误,即“无法将 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/

相关文章:

c - 日志线程的奇怪行为

java - 使用 FIFO 队列和 peek() 方法实现共识协议(protocol)

C# 转换函数命名约定

c# - .NET 中的开源 EDIFACT BAPLIE 解析器?

c# - 使用 XmlSerializer 忽略外部元素

java - 线程跳过一些迭代

c# - .NET 中是否有任何东西可以获取特定于文化的所有工作日的缩写?

c# - 使用 Entity Framework 检查日期列表中的数据库表中是否存在任何值

.net - ASP.NET Gridview - 如何垂直更改颜色属性?

.net - 是否可以向Word文档中添加一些数据?