我需要并行运行四个功能,同时保持 UI 响应和报告进度,后台工作人员是执行此操作的最佳方式吗?我怎样才能在winform中做到这一点?
问问题
2023 次
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 和通用线程的更多信息,请参阅
和(专门针对 TPL)
于 2012-07-11T09:06:27.530 回答
0
最好的方法是使用Task
s ,它是BackgroundWorker
Task
您可以从此处查看如何报告进度:http: //nitoprograms.blogspot.co.il/2012/02/reporting-progress-from-async-tasks.html
于 2012-07-11T08:49:55.303 回答