相关疑难解决方法(0)

你能解释一下STA和MTA吗?

你能用自己的话解释STA和MTA吗?

什么是公寓线程,它们只与COM有关吗?如果是这样,为什么?

.net com multithreading apartments

385
推荐指数
7
解决办法
13万
查看次数

如何将消息发布到运行消息泵的STA线程?

因此,在此之后,我决定在专用的STA线程上显式实例化COM对象.实验表明COM对象需要一个消息泵,我通过调用它来创建Application.Run():

private MyComObj _myComObj;

// Called from Main():
Thread myStaThread = new Thread(() =>
{
    _myComObj = new MyComObj();
    _myComObj.SomethingHappenedEvent += OnSomthingHappened;
    Application.Run();
});
myStaThread.SetApartmentState(ApartmentState.STA);
myStaThread.Start();
Run Code Online (Sandbox Code Playgroud)

如何从其他线程发布STA线程的消息泵消息?

注意: 为了简洁起见,我对问题进行了大量编辑.@Servy的答案的某些部分现在似乎无关紧要,但它们是针对原始问题的.

c# com interop message-queue sta

14
推荐指数
1
解决办法
8494
查看次数

标签 统计

com ×2

.net ×1

apartments ×1

c# ×1

interop ×1

message-queue ×1

multithreading ×1

sta ×1