【问题标题】:c# multithreading sending out 3 different threadsc#多线程发送3个不同的线程
【发布时间】:2015-05-12 20:52:53
【问题描述】:

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

【问题讨论】:

  • 你确定这是失败的代码吗?

标签: c# .net multithreading asynchronous


【解决方案1】:

你会想要一个List&lt;Task&lt;DataTable&gt;&gt;,因为你的任务都计算DataTables。因为您正在存储(非通用)Task 对象,这意味着它们不代表任何结果。

您还需要将代码移至 Main 之外的其他方法中,因为它不能标记为 async

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多