如何取消订阅DatagramSocket MessageReceived事件

时间:2013-04-22 13:07:48

标签: sockets windows-runtime udp unsubscribe

我正在尝试取消订阅绑定的UDP套接字(DatagramSocket)上的MessageReceived并获取异常。 这就是我注册的方式:

    EventRegistrationToken myRegToken;
    myRegToken = (mySocket->MessageReceived += ref new TypedEventHandler<DatagramSocket^, 
          DatagramSocketMessageReceivedEventArgs^>(listenerContext, &ListenerContext::OnMessage));

这是我取消注册的方式:

mySocket->MessageReceived -= myRegToken;

我得到一个例外:在意外时间调用了一个方法。

我做错了什么? 感谢。

2 个答案:

答案 0 :(得分:0)

没有运气,唯一的解决办法似乎是用mySocket = nullptr;删除mySocket并在需要时重新创建

答案 1 :(得分:0)

只需使用

Socket.Dispose();

这是官方的方式,如下所述:

https://msdn.microsoft.com/library/windows/apps/br241358