• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CAsyncSocketのOnConnectがスレッド内で反応しません)

CAsyncSocketのOnConnectがスレッド内で反応せず悩んでいます

このQ&Aのポイント
  • VC++でCAsyncSocketの派生クラス(class ClientSocket)を作り、非ブロッキングモードのストリームソケットでクライアント接続するソフトを作っています。
  • メインスレッドではOnConnectが反応するが、ワーキングスレッド内では反応しない問題に悩んでいます。
  • ウィンドウメッセージがワーキングスレッド内では伝わらないため、OnConnectが反応しないのではないかと疑っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • MASATO3
  • ベストアンサー率60% (27/45)
回答No.1

「一応CAsyncSocketが不可視のウィンドウを持ち、そこでウィンドウメッセージを受け取りOnConnectなどを呼び出している」ということですので、以下の2点をチェックしてみて下さい。 ・ワーキングスレッド内でウィンドウを作成しているか?  ウィンドウメッセージは、ウィンドウを作成したスレッドに投げられます。 ・ワーキングスレッドでメッセージループが回っているか?  メッセージループが回っていないとウィンドウメッセージは送られてきません。

Kyo99
質問者

お礼

>・ワーキングスレッドでメッセージループが回っているか? ご指摘頂いたとおり、ワーキングスレッドのwhile内でソケット処理をすべて行っていたため(初期化,接続,通信など)メッセージループが回っていなかったみたいです。 while内にPeekMessage~DispatchMessageなどを追加してメインダイアログにメッセージを送ることで解決できました。 http://www.sm.rim.or.jp/~shishido/mainloop.html ご教授頂き有難うございました。

関連するQ&A