> ふくながです。
>
> とりあえず自己解決しそうなので、ご報告します。
> 下記URLを読んで理解できました。まだ実装していませんが、
> たぶん、OKでは・・? と思います。
>
> 以前うかがった、「Windowを使ってイベントを・・」という
> のと、同じなんでしょうか。
>
> http://support.microsoft.com/support/kb/articles/Q190/5/23.ASP
>
こんばんは。ブーきちです。
たぶん、どこかで::SendMessage()を行っているのではないでしょうか?
詳しい理由までは解りませんが、どうも、あるスレッドが、
::SendMessage()で送られたメッセージを受信した後、IDispatch::Invoke()を
呼び出すと、この様なエラーになるようです。
何故か、::SendMessage()を::PostMessage()にするとエラーが無くなりました。
(実は、私もこのエラーが出た事があります。)
たぶん、スレッド間の同期状態でIDispatch::Invoke()を呼び出すと、
何かマズイんでしょうかね。
この場合、もしスレッド間の同期を行わせたいのであれば、
::PostMessage()後、イベント(::WaitForSingleObject()と::SetEvent())で
同期をかけるという方法があります。
以上です。
>
> とりあえず自己解決しそうなので、ご報告します。
> 下記URLを読んで理解できました。まだ実装していませんが、
> たぶん、OKでは・・? と思います。
>
> 以前うかがった、「Windowを使ってイベントを・・」という
> のと、同じなんでしょうか。
>
> http://support.microsoft.com/support/kb/articles/Q190/5/23.ASP
>
こんばんは。ブーきちです。
たぶん、どこかで::SendMessage()を行っているのではないでしょうか?
詳しい理由までは解りませんが、どうも、あるスレッドが、
::SendMessage()で送られたメッセージを受信した後、IDispatch::Invoke()を
呼び出すと、この様なエラーになるようです。
何故か、::SendMessage()を::PostMessage()にするとエラーが無くなりました。
(実は、私もこのエラーが出た事があります。)
たぶん、スレッド間の同期状態でIDispatch::Invoke()を呼び出すと、
何かマズイんでしょうかね。
この場合、もしスレッド間の同期を行わせたいのであれば、
::PostMessage()後、イベント(::WaitForSingleObject()と::SetEvent())で
同期をかけるという方法があります。
以上です。