stackoverflow で TcpClient とマルチスレッドについてよく読んだことがありますが、これに対する明確な答えが見つからなかったと思います。
3 つの同一のスレッドを持つアプリケーションがあります。(各スレッド オブジェクトで同じメソッドを呼び出す)
すべてのスレッドは、独自の (ローカル) TcpClient インスタンスを作成し、サーバー (異なる IP アドレス) への tcp 接続を開きます。
スレッドは、異なるサーバー上でのみ同じことを行うことになっています。3 台のサーバー マシンは、同一のサーバー ソフトウェアを実行しています。
これで、3 つのスレッドが「同時に」サーバー リクエストを開始します。
TcpClient オブジェクトは各スレッドで完全に分離されていますか? それとも、根底にあるストリームが不本意ながら共有されているのでしょうか?
スレッドが「彼の」サーバーからではないデータを取得することがあると感じました。たとえば、すべてのスレッドが「準備完了」フラグをポーリングしています。サーバー 1 のみが準備ができてフラグを設定しますが、スレッド 1 とスレッド 2 にはフラグが設定されていることがわかります。
私が間違ったことをしている可能性は十分にあります。ただし、この方法での TcpClient オブジェクトでの通信が安全であることを確実に知っておくと役立ちます。
提案をありがとう、ラルフ
PS: はい、私は現在、C# 8-)) でのマルチスレッドに関する書籍やドキュメントを読んでいます。