我的应用程序在多个文件上独立执行耗时的工作。我创建了一个BackgroundWorker来将工作交给每个文件,但看起来背景工作者只能执行异步工作。是否有可能与它一致地执行多个异步任务,或者是否存在执行同步操作的类似对象?BackgroundWorker中的同步工作
1
A
回答
2
后台工作人员通常用于更新UI和/或关闭工作,以便在长时间运行的进程发生时不冻结UI。这意味着你“传递”了后台工作进程的“文件工作”,然后使用回调来更新UI(通常),在此期间你的APP保持响应。
如果这些项目是独立的,那么您可能需要暂时搁置一些线程来分割工作。再次,如果我正确地理解你。如果我是那么你可能想看看Jon Skeet's线程文章。
1
虽然你可以使用BackgroundWorker,但我认为你应该简单地分离出几个线程来完成这项工作。一个线程(可能是主线程)将创建并启动这些工作线程,然后对所有工作者执行Join,以等待处理完成。
或者,如果您使用.Net 3.5,请看一下Parallel Extensions for .Net。该库中的任务对象可能适合您的情况。
+0
Joe Duffy非常棒的并行扩展是一个了不起的但他们仍然在CTP – cgreeno 2008-12-22 23:31:02
0
通过在代码中创建多个BackgroundWorker对象,可以执行多个异步任务。我们创建了一个JobPool类,该类创建了许多要运行的BackgroundWorker对象,以便我们可以控制任何时候运行的总数。但是,如果只有几个文件,你会处理这将是矫枉过正。
相关问题
- 1. BackgroundWorker的不工作... VB.Net
- 2. Python的asyncio同步工作
- 3. Java同步函数工作,同步块不工作
- 4. backgroundWorker和progressChanged不工作
- 5. BackgroundWorker不工作在VSTO
- 6. Eclipse Svn同步不工作?
- 7. GetCallbackEventReference不能同步工作
- 8. 同步任务不工作
- 9. 同步调用不工作,但异步
- 10. 同步方法不工作作为同步
- 11. 在Java中如何同步工作
- 12. MonoTouch的BackgroundWorker的调用不工作
- 13. 工作线程中的同步和异步ioctl
- 14. 如何立即取消工作的BackgroundWorker?
- 15. 同步是如何工作的?
- 16. 如何保持2张不同工作表中的值同步?
- 17. 同步框架文件同步在运行时工作
- 18. 同步Eclipse工作区,不同的操作系统,如何?
- 19. 当BackgroundWorker工作时UserInterface冻结
- 20. BackgroundWorker如何在底层工作?
- 21. Backgroundworker ProgressChanged在工作完成后执行
- 22. VB.Net BackgroundWorker和AsyncCancel无法正常工作
- 23. 异步动作+同步DBQuery VS同步动作+异步DbQuery
- 24. 运行石英工作同步
- 25. 同步方向按预期工作
- 26. 运行同步故障在工作灯
- 27. 节点js Mongodb findOne不工作同步
- 28. 同步方法不按预期工作
- 29. FileMaker Pro 10 - 同步性如何工作?
- 30. 排序节点同步如何工作?
这似乎很奇怪。工作是同步的还是异步的? 如果它是同步的,那么在继续之前需要等待它,那么为什么要将它传递给后台工作人员,这意味着要在后台执行某些操作? – Yuliy 2008-12-22 22:48:31