1

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

4

3 回答 3

2

后台工作人员通常用于更新 UI 和/或传递工作,这样您就不会在长时间运行的进程发生时冻结 UI。这意味着您“传递”后台工作进程“文件工作”,然后使用回调来更新 UI(通常),在此期间您的 APP 保持响应。

如果这些项目是独立的,那么您可能需要处理几个线程来拆分工作。再说一次,如果我理解正确的话。如果我是,那么您可能想查看Jon Skeet 的线程文章。

于 2008-12-22T23:21:34.563 回答
1

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

或者,如果您使用的是 .Net 3.5,请查看 .Net 的并行扩展。该库中的 Task 对象可能非常适合您的情况。

于 2008-12-22T23:19:52.617 回答
0

您可以通过在代码中创建多个 BackgroundWorker 对象来执行多个异步任务。我们创建了一个 JobPool 类,该类创建了许多要运行的 BackgroundWorker 对象,以便我们可以随时控制运行的总数。但是,如果只有几个文件,您将要处理这将是矫枉过正。

于 2009-01-09T19:18:43.057 回答