【问题标题】:How to unsubscribe from DatagramSocket MessageReceived event如何取消订阅 DatagramSocket MessageReceived 事件
【发布时间】:2013-04-15 09:38:38
【问题描述】:

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

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

这就是我取消注册的方式:

mySocket->MessageReceived -= myRegToken;

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

我做错了什么? 谢谢。

【问题讨论】:

    标签: sockets windows-runtime udp unsubscribe


    【解决方案1】:

    随便用

    Socket.Dispose();

    这是官方的方式,在这里描述:

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

    【讨论】:

    • 是的,但我想保留套接字。
    【解决方案2】:

    不走运,唯一的解决方案似乎是使用 mySocket = nullptr; 删除 mySocket 并在需要时重新创建它

    【讨论】:

    • 请注意,DatagramSocket 是 IDisposable,因此您应该在 mySocket = nullptr 之前调用 Dispose
    猜你喜欢
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2017-07-16
    • 2014-02-15
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    相关资源
    最近更新 更多