このコードスニペットを使用すると、MessageOutput.Textは2回設定されます。これは、MessageOutput.Textを他の場所に設定しないためコードが2回実行されることを意味します。私は新しいメッセージを取得するたびに、このメソッドが呼び出され、UIを更新することになっています。なぜこれが起こっているのですか?どのように修正できますか?イベントハンドラが複数回実行される
async void MessageReceived(DatagramSocket socket, DatagramSocketMessageReceivedEventArgs eventArguments)
{
uint stringLength = eventArguments.GetDataReader().UnconsumedBufferLength;
string receivedMessage = eventArguments.GetDataReader().ReadString(stringLength);
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() =>
{
MessageOutput.Text += (receivedMessage + "\n");
});
}
メソッドが2回呼び出されていないことを確認してください。 – pquest
このメソッドは、新しいメッセージ 'listenerSocket.MessageReceived + = MessageReceived;を受け取ったときに呼び出されます。この場合、受信したメッセージは2回表示されます。 – Stefan
それは私の質問を全く変えません。 'MessageReceived'の最初の行にブレークポイントを置き、それを2回ヒットするかどうかを確認してください。 – pquest