情况是这样的,我用atl写的一个最简单的基于EXE的com服务,其中提供了一个接口叫Test()
代码如下,几乎是不能在简陋了,但问题出现了
STDMETHODIMP CMyProperty::Test(void)
{
MessageBox( NULL, _T("haha"), _T("ok"), MB_OK );
return S_OK;
}我启动三个客户端,分别调用Test()这时候弹出了三个haha的messagebox. 难道com接口调用不是互斥的吗?或者说不是串行化的吗?那如果我想串行化如何做,比如,在第一个人调用了test后,要等messagebox消失了后,第2个人的test函数才能执行,要怎么办呢?
代码如下,几乎是不能在简陋了,但问题出现了
STDMETHODIMP CMyProperty::Test(void)
{
MessageBox( NULL, _T("haha"), _T("ok"), MB_OK );
return S_OK;
}我启动三个客户端,分别调用Test()这时候弹出了三个haha的messagebox. 难道com接口调用不是互斥的吗?或者说不是串行化的吗?那如果我想串行化如何做,比如,在第一个人调用了test后,要等messagebox消失了后,第2个人的test函数才能执行,要怎么办呢?
Test函数可以设置一个命名事件, 用事件进行同步