如何接收在vb中引发的c#中的事件?
我需要使用一个用visual basic编写的遗留库,它会引发一些事件。实际上,如果引发了一个事件,我不知道如何在我的新c#项目中绑定操作 遗留代码中的事件定义如下如何接收在vb中引发的c#中的事件?,c#,C#,我需要使用一个用visual basic编写的遗留库,它会引发一些事件。实际上,如果引发了一个事件,我不知道如何在我的新c#项目中绑定操作 遗留代码中的事件定义如下 Public Event OnStartOfMainLoop(ByRef evt As HandlerEvent, ByVal datapath As String, ByRef skipRun As Boolean, ByRef refreshQueueMap As Boolean, ByRef refreshFormsMap A
Public Event OnStartOfMainLoop(ByRef evt As HandlerEvent, ByVal datapath As String, ByRef skipRun As Boolean, ByRef refreshQueueMap As Boolean, ByRef refreshFormsMap As Boolean)
并提出
RaiseEvent OnStartOfMainLoop(evt, datapath, skipRun, refreshQueueMap, refreshFormsMap)
现在,我如何在我的新项目中接收并处理此事件?在C#中,您只需订阅此事件:
obj.OnStartOfMainLoop += MyEventHandlerMethod;
public void MyEventHandlerMethod(ref HandlerEvent evt, string datapath,
ref bool skipRun, ref bool refreshQueueMap, ref bool refreshFormsMap)
{
//Handle the event here
}
其中,obj
是您订阅的对象的实例,MyEventHandlerMethod
是您希望将其路由到的方法
您需要确保处理程序方法正确实现事件所需的签名。
objectWithThisEvent.OnStartOfMainLoop+=MyHandler
为什么要将ByRef
布尔值传递到事件处理程序中?我想您必须添加ref
修饰符,因为OP的参数是ByRef
。可能是错的,有一段时间没有使用VB.NET了。@AsadSaeeduddin是的,我已经更新了答案。谢谢