C# Winform是否可以使用backgroundworker并行运行函数?

C# Winform是否可以使用backgroundworker并行运行函数?,c#,winforms,parallel-processing,backgroundworker,C#,Winforms,Parallel Processing,Backgroundworker,我需要并行运行四个函数,同时保持UI响应和报告进度,后台工作人员是这样做的最佳方式吗?如何在winform中执行此操作?最好的方法是使用任务s,它是BackgroundWorker 您可以在此处查看如何从任务报告进度:是,使用任务并行库。您可以运行类似这样的并行任务 Parallel.Invoke(() => DoSomeWork(), () => DoSomeOtherWork()); 它比后台工作人员提供了更多的选择 更多参考资料:您可以使用,但我建议使用。对于您想要的,您可以

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

最好的方法是使用
任务
s,它是
BackgroundWorker


您可以在此处查看如何从
任务报告进度:

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

Parallel.Invoke(() => DoSomeWork(), () => DoSomeOtherWork());
它比后台工作人员提供了更多的选择

更多参考资料:

您可以使用,但我建议使用。对于您想要的,您可以使用以下内容

TaskCreationOptions atp = TaskCreationOptions.AttachedToParent;
Task.Factory.StartNew(() =>
{
    Task.Factory.StartNew(() => { SomeMethod() }, atp);
    Task.Factory.StartNew(() => { SomeOtherMethod() }, atp); 
}).ContinueWith( cont => { Console.WriteLine("Finished!") });
这是使用子任务,这里我有两个,您将使用四个。当TPL使用线程池时,需要注意一些限制,因为线程池对真正并发操作的数量有限制。请检查此项,有关TPL和通用线程的更多信息,请参阅

和(具体针对第三方物流)


在WWW上有很多关于这方面的信息。我建议在这里提问之前进行更全面的搜索……我没有找到在后台工作程序中使用parallel.invoke的任何示例。我猜你不能在后台工作中做多个任务?…问这个问题的原因是为了看看我是否在正确的轨道上。我曾尝试通过在clickbutton事件后启动线程、task和parallel.invoke来运行四个函数,但都不起作用,因为我试图实现并行执行,但得到的是顺序执行。我想知道启动后台线程/task/parallel.invoke时是否出错。只要我不更新屏幕上的任何内容,这就应该可以了。好的,这说明了报告,但我如何在一个事件背后启动多个后台任务并等待它完成?