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

本文关键字:保留 引用 实例 访问 线程 | 更新日期: 2023-09-27 18:36:47

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

谢谢大家!

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

为了获得参考,它需要保存在某个地方。由您决定要将其存放在哪里。

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

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

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

我需要访问IsAlive属性

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