2015-10-15 53 views
1

我需要使用以visual basic編寫的遺留庫來引發一些事件。其實我不知道如何在我的新c#項目中綁定一個動作,如果其中一個事件引發。如何接收在vb中引發的c#事件?

的遺留代碼的事件被定義這樣

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) 

現在,我怎麼能在我的新項目收到此事件和處理呢?

+1

'objectWithThisEvent.OnStartOfMainLoop + = MyHandler' – Carsten

+0

爲什麼你將'ByRef'布爾值傳遞給你的事件處理程序? –

回答

2

在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是要路由到方法。

您將需要確保處理程序方法正確地實現您的事件所需的簽名。

+1

我想你必須添加'ref'修飾符,因爲OP的參數是'ByRef'。雖然可能是錯誤的,但暫時還沒有使用VB.NET。 –

+0

@AsadSaeeduddin是的,我已經更新了答案。謝謝。 –