繁体   English   中英

可以使用backgroundworker并行运行Winform运行功能吗?

[英]Winform running functions in parallel using backgroundworker possible?

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

是的,使用任务并行库。 你可以运行类似的并行任务

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

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

更多参考: TPL

您可以使用BackgroundWorker执行此操作,但我建议使用任务并行库 对于你想要的,你可以使用如下的东西

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)

这个很棒的教程

最好的方法是使用Task ,它是BackgroundWorker的替代品

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM