0

我有一个带有几个进度条的主线程。每个进度条都是读取 DataTable 的进度,所以我有 6 个进度条来表示 6 个不同的变量(DataTable dt1, ... dt2, ... dt3, ...),这就是痛苦的开始。

我一直在使用 Task、Thread、BackgroundWorker 等,但找不到干净的方法:

  • 选择要阅读的信息的位置
  • Async在主线程上加载进度
  • 返回读取DataTable并将其存储在相应的dt

我已经做到了:

Task t = Task.Factory.StartNew(new Action(() =>
        {
            dt1 = customProgress.Read<DataTable>("Path");
        }));

编辑:事实上,我的问题令人困惑。我将重写它:

有没有一种更有效的方法可以通过线程来交叉这种信息,或者有一种方法可以在 MainThread 运行时创建一个“等待”结果的变量?

4

1 回答 1

0

无需等待会阻塞 UI 的主线程。相反,您可以使用 Task.Factory.ContinueWhenAll() 方法在所有任务完成后设置延续。如果要在 UI 线程上运行此延续,则将调度程序参数作为 TaskScheduler.FromCurrentSynchronizationContext() 传递

于 2013-04-12T23:30:21.460 回答