C#访问主线程实例而不保持引用

时间:2016-02-29 14:28:30

标签: c# multithreading reference instance

是否可以在不保留应用程序启动时设置的引用的情况下获取主线程的实例?在我的观点中,在初始化模块时传递主线程实例并不是一个很好的解决方案。

谢谢大家!

1 个答案:

答案 0 :(得分:1)

为了获得参考,需要将其保存在某处。由您来决定您想要持有它的确切位置。

  

在我的观点中,初始化模块时传递主线程实例不是一个很好的解决方案。

在初始化时传递主线程实例并不是唯一可用的选项。您还有其他几个选择:

  • 在众所周知的模块中制作参考static - 这是影响非常有限的最简单选项,因为主线程永远不会更改。
  • 制作线程注册表,指明哪个线程ID是主要的 - 此选项可让您维护线程层次结构
  • 使用反向控制容器,并让它为您设置参考 - 这是一个可能适用于IOC环境的高级选项。它允许您将访问主线程的模块与项目的主模块分离。
  

我需要访问IsAlive属性

您可以使用static对主线程的引用创建单个模块,并为其指定IsMainThreadAlive属性。您可以通过静态提供一个事件来进一步封装对IsAlive的检查,该事件通知订阅者主线程已退出。对于需要知道主线程何时退出的模块,这可以作为一个很好的解耦选项。