在 XP 上运行。我有一个调用 calls 的客户端CoInitializeEx(NULL, COINIT_MULTITHREADED)
,加载一个(本地)DCOM 对象,并附加一个事件接口,以便 DCOM 对象可以发回事件。客户端看起来很像记事本,带有一个覆盖客户端区域以显示事件消息的多行文本框。以下是创建锁定的调用:
- 客户端调用
p->DoStuff()
DCOM 对象。 - DCOM 对象
c->DoStuffEvent()
在处理时调用客户端DoStuff()
。 - 客户端向子文本框发送一条
EM_REPLACESEL
消息,让它显示“事情正在发生”
客户端冻结在SendMessage(EM_REPLACESEL)
. 客户端的调用p->DoStuff()
在主线程上SendMessage(EM_REPLACESEL)
完成,而在不同的线程上完成。我确定这与问题有关。
有人可以解释导致锁定的原因以及我如何解决它吗?客户端和 DCOM 对象由我在 MSVC/ATL 中编码,因此我可以根据需要修改它们。