事件处理C#和VB.NET之间的差异

Did*_*evy 2 c# vb.net timer event-handling

NET大师......你怎么把这个大块转换成VB?

this.timer = new System.Timers.Timer(100);
this.timer.Elapsed+=new System.Timers.ElapsedEventHandler(ManageThreads);
this.timer.Start();
Run Code Online (Sandbox Code Playgroud)

当我使用在线转换器(Telerik)时,中间线转换如下:

Me.timer.Elapsed += New System.Timers.ElapsedEventHandler(ManageThreads)
Run Code Online (Sandbox Code Playgroud)

有2个错误:1-"Public eventElapsed是一个事件,无法直接调用.使用raiseEvent 2- Delegate需要一个Adess Of表达式.我只需添加"Address Of"吗?

任何线索都热烈欢迎.

Pau*_*sik 6

添加事件处理程序的语法在C#和VB.NET之间是非常不同的,因为您发现Telerik不能很好地处理这种差异.

C#添加处理程序语法:

<object>.<event> += <event_handler_function>
Run Code Online (Sandbox Code Playgroud)

VB添加处理程序语法:

add handler <object>.<event>, addressof <event_handler_function>
Run Code Online (Sandbox Code Playgroud)

VB事件处理可能会遇到另一个问题:您要添加事件处理程序的对象必须在类范围内声明.例如,您无法将处理程序添加到本地创建的对象(在方法中)并将其返回或添加到集合中.所以当你需要动态地做事时,你基本上有一个类级临时变量.

祝好运.