Как я могу использовать следующие события / рассылки, написанные на C #, в VB.NET? - PullRequest
1 голос
/ 03 октября 2011

Я использую библиотеку APNS-Sharp от JdSoft в своем веб-приложении ASP.NET. Библиотека написана на C # и широко использует функции делегатов и события для многопоточности. Мое приложение написано на VB.NET, и я немного озадачен тем, как перевести следующий пример кода (C #):

....
//Wireup the events
service.Error += new FeedbackService.OnError(service_Error);
....
}

static void service_Error(object sender, Exception ex)
{
Console.WriteLine(...);
}

Вот соответствующие члены класса FeedbackService:

public delegate void OnError(object sender, Exception ex);
public event OnError Error;

По сути, я пытаюсь выяснить, как прикрепить функцию (например, service_Error) к событию (например, Error) в VB.NET. Мне неясно, что означает синтаксис + = в этом контексте, и VisualStudio говорит, что по какой-то причине мой код VB.NET не может напрямую вызвать событие «Ошибка».

Спасибо!

Ответы [ 3 ]

3 голосов
/ 03 октября 2011

Оператор += в основном подписывает функцию FeedbackService.OnError на список вызовов Error.Поэтому при возникновении события Error вызывается метод OnError.

Чтобы перевести приведенный выше код в VB.NET, он будет выглядеть примерно так:

// define delelgate/event
Public Delegate Sub OnError(sender As Object, ex As Exception)
Public Event OnError Error

// attach method to event
AddHandler service.Error, service_Error

См. Как: вызывать и использовать события для некоторых примеров в VB.NET.

2 голосов
/ 03 октября 2011
AddHandler service.Error, service_Error
0 голосов
/ 03 октября 2011

Я не уверен в реализации VB, боюсь, но синтаксис + = в C # по отношению к делегатам добавляет метод в список методов делегатов (список вызовов)

...