- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CAsyncSocketのOnConnectがスレッド内で反応しません)
CAsyncSocketのOnConnectがスレッド内で反応せず悩んでいます
このQ&Aのポイント
- VC++でCAsyncSocketの派生クラス(class ClientSocket)を作り、非ブロッキングモードのストリームソケットでクライアント接続するソフトを作っています。
- メインスレッドではOnConnectが反応するが、ワーキングスレッド内では反応しない問題に悩んでいます。
- ウィンドウメッセージがワーキングスレッド内では伝わらないため、OnConnectが反応しないのではないかと疑っています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「一応CAsyncSocketが不可視のウィンドウを持ち、そこでウィンドウメッセージを受け取りOnConnectなどを呼び出している」ということですので、以下の2点をチェックしてみて下さい。 ・ワーキングスレッド内でウィンドウを作成しているか? ウィンドウメッセージは、ウィンドウを作成したスレッドに投げられます。 ・ワーキングスレッドでメッセージループが回っているか? メッセージループが回っていないとウィンドウメッセージは送られてきません。
お礼
>・ワーキングスレッドでメッセージループが回っているか? ご指摘頂いたとおり、ワーキングスレッドのwhile内でソケット処理をすべて行っていたため(初期化,接続,通信など)メッセージループが回っていなかったみたいです。 while内にPeekMessage~DispatchMessageなどを追加してメインダイアログにメッセージを送ることで解決できました。 http://www.sm.rim.or.jp/~shishido/mainloop.html ご教授頂き有難うございました。