我有一个本地C ++应用程序和两个用C#编写的dll。假设本机C ++应用程序是“ AnApp”,两个dll是“ RaiseEvent” .dll和“ HandleEvent” .dll
两个C#dll中的每一个都包含一个类。 RaiseEvent启动一个事件,HandleEvent订阅该事件,以执行称为“ ReceiveEvent”的方法。
在AnApp中,有一个C ++ / CLI类充当包装器。
在这个包装器中,我从RaiseEvent实例化一个对象,并从HandleEvent实例化另一个。
然后,事件被启动(我可以在调试器中看到它)。我期望该事件在HandleEvent类中处理,但是没有发生。我的意思是,它永远不会输入ReceiveEvent方法。
我把所有这些作为概念证明,我不确定它是否应该起作用。
所以,问题是,当通过C ++ / CLI包装器在本地C ++应用程序中使用每个dll时,是否可以处理一个.NET dll到另一个事件?
答案 0 :(得分:-1)
不看一些示例代码就很难理解您的确切问题,但是我会去的。
实例化对象不足以将事件链接到事件处理程序。
该事件必须通过+=
运算符
var raiseEvent = new RaiseEvent();
var handleEvent = new HandleEvent();
raiseEvent.TheEvent += handleEvent.ReceiveEvent;
我不建议像这样公开公开ReceiveEvent
函数。
但是HandleEvent
对象需要访问TheEvent
实例才能订阅它。
也许像这样:
class HandleEvent
{
//...
public void Subscribe(RaiseEvent eventRaiser)
{
eventRaiser.TheEvent += this.ReceiveEvent;
}
}
//...
var raiseEvent = new RaiseEvent();
var handleEvent = new HandleEvent();
handleEvent.Subscribe(raiseEvent);