从线程到主要交叉结果

时间:2013-01-21 18:24:16

标签: c# .net c#-4.0

我有一个带有几个进度条的主线程。每个进度条都是DataTable读数的进度,因此我对6个不同的变量(DataTable dt1, ... dt2, ... dt3, ...)有6个进度条,这就是疼痛开始的地方。

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

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

我已经完成了:

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

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

是否有更有效的方法通过线程交叉此类信息,或者在MainThread运行时创建一个等待“等待”结果的变量?

1 个答案:

答案 0 :(得分:0)

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