私は奇妙な問題を抱えています。C# で記述されたプログラムに SocketIO4Net クライアントを使用しています。このプログラムは、NodeJS および SocketIO で記述されたサーバーと通信します。SocketIO4NET クライアントで「socket.emit()」および「socket.On()」メソッドを使用して、プログラムとサーバーの間でデータを送受信できます。ただし、サーバーから受信したデータで GUI のテキスト ボックスを更新しようとしても、何も起こりません。しかし、「MessageBox.Show()」メソッドを使用すると、受信したデータを表示できます。データを受信するために次のコードを使用しています。
public Form1()
{
InitializeComponent();
socket = new Client("http://127.0.0.1:80/");
socket.On("message", (data) =>
{
String msg = data.Json.Args[0].ToString();
MessageBox.Show(msg,"Received Data");
rxtxtbox.Text = msg;
});
socket.Connect();
}
データ送信の場合:
private void sendbtn_Click(object sender, EventArgs e)
{
String msg = msgtxtbox.Text.ToString();
socket.Emit("private message", msg);
}
上記のコードは正常に動作します。しかし、TextBox 'rxtxtbox' を更新していません。「rxtxtbox.Text = msg;」という行を移動すると 「MessageBox.Show();」の上にある場合、「メッセージ」イベントを受信しても何も起こりません。ブレークポイントを設定して、変数「msg」の値とその問題を監視してみました。テキストボックスを更新して「msg」を渡すためだけに別の関数を宣言しようとしましたが、まだ結果が得られません! これは「メッセージ」イベントの待機と関係があると思いますか? 「Application.DoEvents()」および「rxtxtbox.Refresh()」メソッドを試しましたが、まだ運がありません! 私はC#が初めてです。助けてください!