0

我需要并行运行四个功能,同时保持 UI 响应和报告进度,后台工作人员是执行此操作的最佳方式吗?我怎样才能在winform中做到这一点?

4

3 回答 3

1

是的,使用任务并行库。您可以运行并行任务,例如

Parallel.Invoke(() => DoSomeWork(), () => DoSomeOtherWork());

它为您提供了比后台工作人员更多的选择

更多参考:TPL

于 2012-07-11T08:56:08.047 回答
1

您可以使用 a 来执行此操作,BackgroundWorker但我会推荐Task Parallel Library。对于您想要的,您可以使用以下内容

TaskCreationOptions atp = TaskCreationOptions.AttachedToParent;
Task.Factory.StartNew(() =>
{
    Task.Factory.StartNew(() => { SomeMethod() }, atp);
    Task.Factory.StartNew(() => { SomeOtherMethod() }, atp); 
}).ContinueWith( cont => { Console.WriteLine("Finished!") });

这是使用子任务,这里我有两个,你会使用四个。由于 TPL 使用对真正并发操作的数量有限制的线程池,因此需要注意一些限制。请查看此https://stackoverflow.com/a/11229896/626442,有关 TPL 和通用线程的更多信息,请参阅

J. Albahari 的 C# 线程

和(专门针对 TPL)

这个很棒的教程

于 2012-07-11T09:06:27.530 回答
0

最好的方法是使用Tasks ,它是BackgroundWorker

Task您可以从此处查看如何报告进度:http: //nitoprograms.blogspot.co.il/2012/02/reporting-progress-from-async-tasks.html

于 2012-07-11T08:49:55.303 回答