2013-06-12 50 views
3

在我的c#應用程序中,我有一個進度條。 C#應用程序正在調用處理多個文件的C++/cli dll。由於每個文件都在dll中處理,我想跟蹤它在c#應用程序中的進度。爲此,我需要在C++/cli中引發一個事件並在C#中使用它。從MSDN我收集我需要在我的C++/CLI類中的以下內容:在C++/cli dll中引發事件並在c中消耗

delegate void Del(int); 
    event Del^ E; 
    void fire(int i) { 
     E(i); 
    } 

MSDN Events

在MSDN事件的接收器是在同一個C++/CLI項目,它展示瞭如何提升事件。在我的項目中,c#應用程序將接收在處理每個文件後應該用C++/cli引發的事件。我也搜索了很多,但還沒有弄清楚。所以,我的問題是,我如何在C++/cli中引發這個事件,以及如何將我的c#程序連接到它?一些代碼顯示了這樣做的方式將不勝感激。 謝謝!

馬特, 感謝您的迴應。 在C#我想

MW.Class1 oM = new MW.Class1(); 
oM.fire += ProgressBarChanged(int i); 

它不會編譯說不能分配,因爲火是方法組。我也有我的C#程序,處理程序

public void ProgressBarChanged(int i) 
{ 

} 

這確實更好雖然編譯器說INT預計不會和由於錯誤消息指出不編譯

oM.fire += new EventHandler(ProgressBarChanged(int i)); 
+0

您將附加到C#中的事件,就像您將附加到C#中的任何其他事件一樣。向我們展示您在C#中嘗試過哪些方法無效。 –

+0

我編輯並添加了更多信息給我的問題 – user2192008

回答

1

fire是一種方法,而不是一個事件。在事件上調用+=,並且在引用事件處理程序方法時請忽略()

oM.E += this.ProgressBarChanged; 

至於觸發事件,你做正確的是:只需撥打您的活動像一個委託或方法,傳遞事件參數。