Различия в обработке событий между C # и VB.NET - PullRequest
2 голосов
/ 18 ноября 2010

NET гуру ... Как бы вы преобразовали этот кусок в VB?

this.timer = new System.Timers.Timer(100);
this.timer.Elapsed+=new System.Timers.ElapsedEventHandler(ManageThreads);
this.timer.Start();

Когда я использую онлайн-конвертер (Telerik), средняя строка конвертируется следующим образом:

Me.timer.Elapsed += New System.Timers.ElapsedEventHandler(ManageThreads)

с 2 ошибками: 1- "Public eventElapsed - это событие, которое не может быть вызвано напрямую. Используйте riseEvent 2- Делегат требует Adess Of expression. Я просто добавляю "Address Of"?

Любая подсказка горячо приветствуется.

Ответы [ 2 ]

6 голосов
/ 19 ноября 2010

Синтаксис для добавления обработчиков событий очень отличается в C # и VB.NET, и, как вы обнаружили, Telerik не очень хорошо справляется с этой разницей.

C # добавляет синтаксис обработчика:

<object>.<event> += <event_handler_function>

Синтаксис VB-добавления обработчика:

add handler <object>.<event>, addressof <event_handler_function>

Существует еще одна ловушка, с которой вы можете столкнуться при обработке события VB: объект, который вы добавляетеобработчик события должен быть объявлен на уровне класса.Например, вы не можете добавить обработчик к локально созданному объекту (в методе) и вернуть его или добавить в коллекцию.Таким образом, у вас есть временная переменная уровня класса, когда вам нужно что-то делать динамически.

Удачи.

3 голосов
/ 18 ноября 2010

что-то странное возвращает этот конвертер

Try: AddHandler Me.timer.Elapsed, AddressOf ManageThreads

Динамически добавлять и удалять обработчики событий в .NET http://www.thescarms.com/dotnet/EventHandler.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...