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

Я использую библиотеку JdSoft APNS-Sharp в своем веб-приложении 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 не может получить прямой доступ.


person Mirthquakes    schedule 03.10.2011    source источник
comment
Просто подпишитесь на событие, как обычно. Вы должны опубликовать то, что вы пытались.   -  person Security Hound    schedule 03.10.2011
comment
Честно говоря, я никогда не работал с потоками в ASP.NET. Мои первые попытки/исследовательские усилия были направлены на методы делегирования, такие как «объединить» и «добавить делегат». Я определенно шел по неправильному пути.   -  person Mirthquakes    schedule 03.10.2011
comment
Вам следует изучить, как зарегистрировать событие в приложении ASP.NET. Одно из основных отличий заключается в том, что вам придется беспокоиться о сеансе и любых других уникальных проблемах на странице ASP.NET.   -  person Security Hound    schedule 03.10.2011


Ответы (2)


Оператор += в основном подписывает функцию 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 см. в разделе Как создавать и использовать события. .

person James    schedule 03.10.2011
comment
Спасибо! Мне удалось подключить событие, используя что-то вроде AddHandler service.Error, AddressOf service_Error - person Mirthquakes; 03.10.2011

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

person dougajmcdonald    schedule 03.10.2011