我有一些在 .NET 应用程序的线程上创建和运行的 COM 对象。线程被标记为单线程公寓,一切似乎都在工作。我的理解是,如果这些线程尝试从主线程访问 COM 对象,那么这些对象将在 .NET 中自动为我编组和序列化,因此即使在这种情况下,事情也会为我处理,一切安全整洁,尽管可能有点慢。
我的问题是,虽然事情似乎运行良好,但我并没有在我正在创建的 STA 线程中发送消息循环。如果可以的话,我宁愿避免消息循环,因为它会导致额外的复杂性(以及可能的效率损失)。
我已经阅读了很多关于为什么需要消息循环的建议(主要来自非常有帮助的 Hans Passant),我的理解是消息循环在线程 A 上提供了一个位置,其他线程 B 可以请求 COM 对象生活在线程 A 上可以被编组和播放。如果这是正确的,那么只要没有其他线程从线程 A 上的 COM 对象请求任何内容,线程 A 在不发送消息循环时是否安全?还是在其他情况下消息循环也可能发挥作用?
我在这里玩火吗?有没有这样的情况,你问你是不是在玩火,而你不是?