2016-07-31 22 views
0

このコードスニペットを使用すると、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"); 
     }); 
    } 
+0

メソッドが2回呼び出されていないことを確認してください。 – pquest

+0

このメソッドは、新しいメッセージ 'listenerSocket.MessageReceived + = MessageReceived;を受け取ったときに呼び出されます。この場合、受信したメッセージは2回表示されます。 – Stefan

+0

それは私の質問を全く変えません。 'MessageReceived'の最初の行にブレークポイントを置き、それを2回ヒットするかどうかを確認してください。 – pquest

答えて

1

なぜ、この出来事とどのように私はそれ

で、いくつかのvirtual network switchesがシステムに存在し、最も可能性のある理由修正することができますです。

たとえば、私のWindows 10には3つの仮想ネットワークスイッチがありますが、コントロールパネル - >ネットワークとインターネット - >ネットワーク接続に行ってください。 enter image description here

私は同時に3つのメッセージを取得します:

Debug.WriteLine("Received data from remote peer (Remote Address: " + 
        eventArguments.RemoteAddress.CanonicalName + ", Remote Port: " + 
        eventArguments.RemotePort + "): \"" + receivedMessage + "\""); 

リモートピアからの受信データ(リモートアドレス:169.254.146.116、リモートポート:22113): "こんにちは" 受信をリモートピアからのデータ(リモートアドレス:172.16.80.1、リモートポート:22113): "Hello" リモートピアからの受信データ(リモートアドレス:10.168.177.14、リモートポート:22113): "Hello"

これらのスイッチのIPv4アドレスを確認するにはCMDでipconfig /allを入力してください:

enter image description here

+0

ありがとう、私は "vEthernet(内部イーサネットポートW​​indows Phoneエミュレータの内部スイッチ)"を無効にしなければなりませんでした。 – Stefan

-1

私はこの問題は、この行である疑いがあります。

listenerSocket.MessageReceived += MessageReceived; 

このイベントハンドラをバインドしたコードを追加してください。例外的にこの行は2回実行されたためです。イベントハンドラが2回実行される理由です。なぜこのイベントが2回バインドされ、問題が解決されるのかを把握しなければなりません。 願っています!

+0

これは答えではありません。あなたはコメントを投稿するのに十分な評判を得る必要があります。 – Enigmativity

+0

私はあなたの質問に答えるための評判を得ることはありませんが、あなたのコメントに感謝します。 –

+0

申し訳ありませんが、私はあなたが何を意味するのか分かりません。この回答を削除する必要があります。 – Enigmativity

関連する問題