1

实际上,我无法在后台线程中运行长时间运行的进程。长时间运行的进程直接从 UI 获取输入,然后必须将任何修改保存在数据库中。因此,这个长时间运行的进程无法访问后台线程中的输入,尽管它被写入了 Dispatch 代码(如下所示):

  this.Dispatcher.Invoke((Action)(() =>
   {
       ...//The long running process inside background thread.
   }));

我的基本工作是防止用户在长时间运行的进程运行时单击其他任何地方。那么,有没有其他方法可以做到这一点?

4

1 回答 1

1

我会这样做:

  • 创建一个并发类型之一的“全局”(用于 UI 线程和后台线程)对象。您可以将其设置为单例或将对象传递给两个线程
  • 长时间运行的线程所做的就是从并发对象中读取数据并处理它们。
  • 如果主线程(或任何其他线程)需要在后台执行任何操作,只需将其添加到并发集合中。

并发编程中的这种方法称为生产者-消费者问题

于 2013-06-20T06:45:29.873 回答