【发布时间】:2016-08-04 11:57:43
【问题描述】:
当我使用这段代码的 sn-p 时,MessageOutput.Text 被设置了 2 次,这意味着代码被执行了两次,因为我没有在其他任何地方设置 MessageOutput.Text。每当我收到一条新消息时,都会调用此方法并且它应该更新 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");
});
}
【问题讨论】:
-
您确定该方法没有被调用两次吗?
-
当我收到一条新消息
listenerSocket.MessageReceived += MessageReceived;时调用此方法,在这种情况下它会显示两次收到的消息。 -
这根本不会改变我的问题。在
MessageReceived的第一行打个断点,看看有没有命中两次 -
是的,它被调用了两次,但我不知道为什么。
-
请编辑您的问题并在添加事件处理程序的位置添加代码。如果您这样做的地方不止一处,请全部展示。
标签: c# events event-handling