Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 后台工作中的同步工作_C#_Multithreading_Backgroundworker - Fatal编程技术网

C# 后台工作中的同步工作

C# 后台工作中的同步工作,c#,multithreading,backgroundworker,C#,Multithreading,Backgroundworker,我的应用程序在几个文件上独立执行耗时的工作。我在每个文件上创建了一个BackgroundWorker来将工作传递给,但是BackgroundWorker似乎只能执行异步工作。是否可以同时执行多个异步任务,或者是否有一个类似的对象来执行同步操作?虽然可以使用BackgroundWorker,但我认为您应该简单地剥离几个线程来完成这项工作。一个线程(可能是主线程)将创建并启动这些辅助线程,然后对所有辅助线程执行联接,以等待处理完成 或者,如果您使用的是.NET3.5,请查看。该库中的任务对象可能非常

我的应用程序在几个文件上独立执行耗时的工作。我在每个文件上创建了一个BackgroundWorker来将工作传递给,但是BackgroundWorker似乎只能执行异步工作。是否可以同时执行多个异步任务,或者是否有一个类似的对象来执行同步操作?

虽然可以使用BackgroundWorker,但我认为您应该简单地剥离几个线程来完成这项工作。一个线程(可能是主线程)将创建并启动这些辅助线程,然后对所有辅助线程执行联接,以等待处理完成


或者,如果您使用的是.NET3.5,请查看。该库中的任务对象可能非常适合您的情况。

后台工作人员通常用于更新UI和/或停止工作,以便在长时间运行的流程发生时不会冻结UI。这意味着您“传递”后台工作人员处理“文件工作”,然后使用回调更新UI(通常),在这期间,您的应用程序保持响应


如果这些项目是独立的,那么您可能需要启动几个线程来分割工作。再说一次,如果我理解正确的话。若我是,那个么你们可能想看看这篇文章

通过在代码中创建多个BackgroundWorker对象,可以执行多个aynchronous任务。我们创建了一个JobPool类,该类创建了大量要运行的BackgroundWorker对象,以便我们可以控制在任何时候运行的总数。但是如果只有几个文件需要处理,那就太过分了。

这似乎很奇怪。工作是同步的还是异步的?如果它是同步的,那么在继续之前你需要等待它,那么为什么你要把它传递给后台工作人员,这意味着在后台做事情呢?Joe Duffy很棒,并行扩展是一个惊人的功能,但是它们仍然在CTP中的CTPStill中,但是通过我的测试非常稳定。当然,你的差异可能会有所不同!