在c / cli dll中引发事件并在c#中使用

在我的c#app中,我有一个进度条. C#app正在调用一个处理大量文件的c / cli dll.当在dll中处理每个文件时,我想跟踪它在c#app中的进度.为此,我需要在c / cli中引发一个事件并在C#中使用它.从MSDN我收集我需要在我的c / cli类中以下内容:

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

MSDN Events

在MSDN中,事件的接收者在同一个c / cli项目中,并显示如何引发事件.在我的项目中,c#app将接收在处理每个文件后应在c / cli中引发的事件.我也搜索了很多,但还没弄清楚.所以,我的问题是,如何在c / cli中引发此事件,以及如何将c#程序连接到它?一些代码显示了这样做的方式将非常感激.
谢谢!

马特,
谢谢你的回应.
在C#我正在尝试

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

它不会编译说不能分配因为fire是一个方法组.我也有我的C#程序,处理程序

public void ProgressBarChanged(int i )
{

}

虽然编译器说int不是预期的并且不编译,但这样做更好

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

最佳答案 正如错误消息所示,fire是一种方法,而不是一种事件. Call = on the event,并在引用事件处理程序方法时不使用().

oM.E += this.ProgressBarChanged;

至于触发事件,你正确地做到了:只需像委托或方法一样调用你的事件,传递事件参数.

点赞