【问题标题】:multithreaded c# application多线程 c# 应用程序
【发布时间】:2011-10-18 19:10:32
【问题描述】:

我有一个应用程序,它有一个主 UI 和两个在各自单独的线程上运行的无模式窗口。在将对象从线程传递到线程时,我只需复制在辅助线程上的主线程上运行的对象。 当我想更新对象本身并通过代码和辅助线程进行更改时,我该如何实现?辅助线程始终保留旧对象的副本,并且除非线程被杀死或停止然后再次产生,否则永远不会更新。

【问题讨论】:

  • 为什么要复制对象?从多个线程引用同一个对象并使用并发语义来确保对对象的任何更改都是原子的,这要简单得多。

标签: c# multithreading


【解决方案1】:

有很多方法可以解决这个问题。一种是对象存储库的线程安全共享实例。当一个线程更新它时,其他线程将获得更新的副本。您可以使用 WCF 来简化此操作。有关一些想法,请参阅this article on WCF and concurrency。这是@Eric J 对您的问题的评论的实现。

另一个是通过事件来协调线程。当一个线程更新对象时,会向其他线程发送一个事件。如果对象不经常更改,那可能就足够了。

This question 谈论第三种可能性:BackgroundWorker

【讨论】:

  • 嗯,我使用 wpf 并且我使用调度程序进行大多数调用...这个对象应该更新,但它不是
  • 我提交了一个编辑,以将该信息包含在问题的正文中并适当地标记它。我没有足够的 WPF 经验来提供任何进一步的帮助。祝你好运!
猜你喜欢
  • 1970-01-01
  • 2010-10-12
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多