Учитывая следующий код
Public Shared Sub DoAsyncAction()
Using asmxProxy As New MyAsmxServiceProxy()
AddHandler asmxProxy.WebFunctionCompleted, AddressOf WebFunctionAsync_Completed
// Make the Async ASMX Webservice Call
asmxProxy.WebFunctionAsync()
// RemoveHandler asmxProxy.WebFunctionCompleted, AddressOf WebFunctionAsync_Completed
End Using
End Sub
Private Shared Sub WebFunctionAsync_Completed(ByVal sender As Object, ByVal e As MyAsmxServiceProxy.WebFunctionCompletedEventArgs)
// Do Stuff
End Sub
Мне было интересно, как здесь поддерживается обработчик событий. Итак, допустим, WebFunctionAsync() внутренне занимает ~ 30 секунд. Когда это время истечет, будет запущено событие WebFunctionCompleted, но будет ли мой обработчик (WebFunctionAsync_Completed) по-прежнему срабатывать, даже если webClient был удален и вышел из области действия?
Если вопрос к последнему ответу Да, что, если я прокомментировал строку RemoveHandler. Будет ли это тогда?
Я думаю, что я пытаюсь выяснить, во время вызова асинхронной функции зарегистрированные обработчики событий «кэшируются» (так сказать) вместе с вызовом, так что независимо от того, что происходит с прокси-объектом ASMX или даже если обработчики удалены, зарегистрированные обработчики событий во время вызова все равно будут срабатывать при срабатывании событий?
Может быть, это действительно очевидно, но по какой-то причине я не могу прийти к логическому выводу по этому поводу, и я не нашел ответов в тех нескольких местах, которые я искал в MSDN.