'//サーバーのクローズ
Private Sub CloseServer()
listener.Stop()
listener = Nothing
この2行を入れて
Private Sub ServerListen()
If server Is Nothing Then
Return
End If
この処理の頭で listenerが無い場合は強制的に排除したら
良いと思われます。
コーヒーブレイクさんのコードでも良いと思いますが、上のコードだとエラーが
報告されません。
英文のnetworkstream.endreadのページにbeginreadの説明がありますが、
callback method executes in a separate thread and is called by the system after BeginRead returns
とあります。
スレッドのハッシュコードを調べましたが、呼び出し元と違うスレッドでした。
コールバックメソッドという名前なので元のスレッドに戻るような
印象を受けますが、元ではなく別のスレッドだと思います。
サイトの図ではコールバックをサーバー用スレッド上に書かれてましたが、
誤解を招くのではないでしょうか。
説明を原文で読むことは良いことですね。(^^
callback method executes in a separate thread and is called by the system after BeginRead retuns
「コールバックメソドは別のスレッドで実行され、BeginReadが戻った時に呼ばれます。」と言うことですね。
クライアントから接続要求があると、メインフォームは新しいClientHandlerのクラスのインスタンスを
作成して、StartRead()を実行する、StartRead()の中身はnetworkStream.BeginRead()でこの処理は
別スレッドで行われ、終了時には引数で渡したcallbackReadが呼ばれる。
callbackReadはClientHandlerクラスのコンストラクタで作成した下のメソドである。
callbackRead = new AsyncCallback(this.OnReadComplete)
>サイトの図ではコールバックをサーバー用スレッド上に書かれてましたが、
図はすべてサーバー上のスレッドです。
概念図に突っ込まれるとちょっとドキドキしますが、この場合は特に不具合は無いと思います。
>非同期IO用のスレッドはbeginreadのところで止まって、
これはその通りです。
>コールバックはさらに別スレッドで動いているようです。
この意味がわかりません。
>コールバック用スレッドはbeginreadの呼び出しが完了した
>時点で別スレッドで動きだすということではないでしょうか。
すみませんこの意味もわかりません。
>OnReadCompleteというメソッド名はよくないのではないでしょうか
名前ですか^^; 結構適当です、ただしこのOnReadComplete名ですが、最後に書きましたがオライリー・ジャパンの
「プログラミング C#」と同じ名前にしてます、私にはこんな名前を付けるセンスはありません。
コールバックから呼ばれるOnReadCompleteメソドはクライアントが接続してきた時に
作成したクライアント毎のClientHandlerクラスのインスタンスで、これはメインスレッドとは別の
a separate thread です。
これを呼び出すメソドは上記のClientHandlerクラスのインスタンスのStartReadで作成された
別のスレッドですね。
正確に言うと、「is called by the system」という事なので、systemが呼び出すのでしょう。
WaitOne(Mutex)に関しては試してないのでわかりません。
>...一区切りのデータを受信したと...
これは私の勝手な想像で正確なところはわかりません。
>その時点が原文のいうafter BeginRead returnsなのでしょうか
そのとおりだと思います。
after BeginRead returnsの時にcallbackRead = new AsyncCallback(this.OnReadComplete)
で登録されたOnReadCompleteのアドレスがis called されるという事でしょう。
This webpage has so a lot great details on it, I verify on it everyday. I wish other websites spent as a lot work as this one does generating data legible to readers like myself. I recommend this write-up to all of my facebook friends. This webpage will make some massive passive profit I’m positive. I hope my site does along with this one, it refers to jewelry consumers houston. air max skyline http://air-max-skyline2.webnode.fr/
Ahaa, its good conversation about this article here at this weblog, I have read all that, so at this time me also commenting here.
クロエ バッグ http://www.myindyareahome.com/