在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
Raise .NET event from one DLL to another in C++/CLI
我有一个本机C++应用程序和两个用C#编写的dll。假设本机C++应用程序是"AnApp",两个 dll 是"RaiseEvent".dll和"HandleEvent.dll
两个 C# dll 中的每一个都包含一个类。 RaiseEvent 启动一个事件,HandleEvent 订阅此事件,以便执行名为"ReceiveEvent"的方法。
在AnApp中,有一个C++/CLI类用作包装器。 在这个包装器中,我实例化了一个来自 RaiseEvent 的对象和另一个来自 HandleEvent 的对象。
然后,事件启动(我可以在调试器中看到它(。我本以为该事件将在 HandleEvent 类中处理,但它没有发生。我的意思是,它永远不会进入接收事件方法。
我把所有这些都作为概念证明,我不确定它是否应该有效。
因此,问题是,当每个 dll 通过 C++/CLI 包装器在本机C++应用程序中使用时,是否可以处理从一个 .NET dll 到另一个 .NET dll 的事件?
如果不看到一些示例代码,就很难理解您的确切问题,但我会试一试。
实例化对象不足以将事件链接到事件处理程序。 该活动必须通过+=
运营商订阅
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);
相关文章:
- 挂起和取消挂起一个文件DLL
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- 从 .lib 文件创建一个.dll文件
- C++ |DLL / EXE - 如何从导出的类调用另一个类方法?
- 我可以用C++/WinRT编写一个DLL,供windows桌面应用程序(而不是UWP)或Unity插件使用吗
- 创建一个C++DLL以从C#DLL调用方法
- 引用另一个文件夹中的.dll
- C++将包含的库 (ref DLL) 从根目录更改为另一个位置
- 为什么它无法在 c++ 中全局声明一个构建为 dll 文件的类?
- 将 std::string 作为参数从一个 DLL 传递到另一个 DLL 引发访问冲突错误
- 是否有其他方法将.dll文件从一个项目复制到我的启动项目中的可执行文件旁边
- Java加载DLL,该DLL从JNI中的另一个DLL导出方法
- 如何在另一个 DLL 上使用 '/DELAYLOAD' 的 DLL
- 如何制作一个不依赖msvc dll的win32应用程序
- DLL函数导出一个指针做Delphi程序
- 当从一个应用程序调用时,在DLL方法中创建COM接口指针是有效的,但当从另一个应用软件调用时则无效
- 在一个 DLL 中嵌入所有必需的 DLL
- 是否可以编写一个C .dll库来导出在命名空间和类中编写的方法
- 什么是DLL ?一个文件,以及如何加载到我的vc++项目