4

在我的 c# 应用程序中,我有一个进度条。C# 应用程序正在调用处理许多文件的 c++/cli dll。由于每个文件都在 dll 中处理,我想跟踪它在 c# 应用程序中的进度。为此,我需要在 c++/cli 中引发一个事件并在 C# 中使用它。从 MSDN 我收集到我在我的 c++/cli 类中需要以下内容:

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

MSDN 活动

在 MSDN 中,事件的接收者位于同一个 c++/cli 项目中,并显示了如何引发事件。在我的项目中,c# 应用程序将在处理每个文件后接收应在 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));
4

1 回答 1

2

正如错误消息所说,fire是一种方法,而不是一个事件。调用+=事件,并()在引用事件处理程序方法时省略。

oM.E += this.ProgressBarChanged;

至于触发事件,您这样做是正确的:只需像委托或方法一样调用您的事件,并传递事件参数。

于 2013-06-12T21:21:16.537 回答