當我使用這段代碼時MessageOutput.Text被設置了2次,這意味着代碼被執行了兩次,因爲我沒有在其他地方設置MessageOutput.Text。每當我收到新消息時,都會調用此方法,並且應該更新UI。爲什麼會發生這種情況,我該如何解決?Event Handler不止一次執行
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");
});
}
你確定這個方法沒有被調用兩次嗎? – pquest
當我收到一個新消息'listenerSocket.MessageReceived + = MessageReceived;'時調用這個方法,在這種情況下它會顯示兩次收到的消息。 – Stefan
這並沒有改變我的問題。在「MessageReceived」的第一行放置一個斷點,看看你是否兩次點擊它 – pquest