したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

「C#、VB2005 でSocket通信」について

13いくいく:2009/04/25(土) 00:01:35
〇どのスレッドでコールバックが実行されるか

英文のnetworkstream.endreadのページにbeginreadの説明がありますが、
callback method executes in a separate thread and is called by the system after BeginRead returns
とあります。
スレッドのハッシュコードを調べましたが、呼び出し元と違うスレッドでした。
コールバックメソッドという名前なので元のスレッドに戻るような
印象を受けますが、元ではなく別のスレッドだと思います。
サイトの図ではコールバックをサーバー用スレッド上に書かれてましたが、
誤解を招くのではないでしょうか。

〇いつ実行されるか

クライアントが接続してまだデータを送信していない時、
非同期IO用のスレッドはbeginreadのところで止まって、
コールバックはさらに別スレッドで動いているようです。
非同期IOスレッドはnetworkストリームが利用可能になるかエラーになるまで
ブロックし、コールバック用スレッドはbeginreadの呼び出しが完了した
時点で別スレッドで動きだすということではないでしょうか。
OnReadCompleteというメソッド名はよくないのではないでしょうか。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板