2013-04-22 3 views
2

Я пытаюсь отменить подписку на MessageReceived на связанном UDP-сокете (DatagramSocket) и получить исключение. Вот как зарегистрироваться:Как отказаться от подписки на событие DatagramSocket MessageReceived

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

Это, как я разрегистрировать:

mySocket->MessageReceived -= myRegToken; 

И я получаю исключение: метод был назван в неожиданное время.

Что я делаю неправильно? Спасибо.

ответ

0

Не повезло, единственное решение, кажется, удалить mySocket с mySocket = nullptr; и воссоздать его в случае необходимости

+0

Обратите внимание, что DatagramSocket является IDisposable, поэтому вы должны вызывать Dispose перед mySocket = nullptr – norekhov