NodeJS サーバーとの基本的なやり取りを提供するクラスを作成しました。このクラスには TcpClient インスタンスも含まれており、非同期で動作するため (BeginRead、BeginWrite などのメソッド)、多くの関数がコールバック (ラムダ式を使用する匿名関数) を引数として受け取ります。問題はこのシナリオから始まります (オリジナルと同様の平和なコードについて説明しようとしています)。
this._nodeJS.Send("DATA_TO_SEND", (Response) => {
Console.WriteLine(Response);
// Section1
this._nodeJS.Send("ANOTHER_DATA", (Response1) => {
Console.WriteLine(Response1);
});
});
Section1で問題が発生します。コメントアウトすると、プログラムは期待どおりに動作します。コンソールに書かれた応答が受信されます。コメントアウトされていない場合、非常に奇妙な動作を開始します。セクション 1 のコンソールへの書き込みは機能しません (多くの場合)。重要なことは、このセクションの Console.WriteLine の下のコードが実行されず、「スレッド」がコマンドの直前で停止することです。段階的にデバッグしようとしましたが、Section1 の変数が正しく設定されており、次のコマンドに到達すると、デバッグが停止します。このアプローチに問題はありますか?知っておくべきことがいくつかありますか?
想像力を高めるために、ここに私の例を示します。NodeJS サーバーに接続し、完了したらリクエストを送信し、データを含むレスポンスを待ちます。データは処理され、次のリクエストで NodeJS サーバーに再度送信されます (セクション 1)。NodeJS は最終的な応答とプログラムの動作を教えてくれます...アドバイスをありがとう!