Windows 运行时 (WP 8) 进程外组件和引发/订阅事件
Windows Runtime (WP 8) out of process component and raising / subscription events
我已经用自己的后台线程制作了进程外的 WR/WP8 组件。它在内部处理 SIP 堆栈并在后台线程中运行。它是从ChatterBox MSDN示例修改的代码。https://code.msdn.microsoft.com/windowsapps/ChatterBox-VoIP-sample-app-b1e63b8b
最后几天,我添加委托以从组件引发事件。在 C++/CX 中,它是:
public delegate void OnLogMessage(Platform::String^ msg);
public ref class Logger sealed
{
public:
Logger();
virtual ~Logger();
void FlushLog();
event OnLogMessage^ OnLogMessage;
};
在 C# 代码中订阅了事件:
BackgroundProcessController.Instance.Logger.OnLogMessage += new IntTalk.OnLogMessage(mLogger_OnLogMessage);
它构建正常。
但是在调试过程中我看到异常:
A first chance exception of type 'System.Exception' occurred in mscorlib.ni.dll
Additional information: Interface not registered (Exception from HRESULT: 0x80040155)
If there is a handler for this exception, the program may be safely continued.
生成代理存根 DLL。我检查了 .h/.c 文件 - 它们包含一些事件代码。
此问题的原因可能是什么?
在纯模式下调试相同的代码时,我观察到"接口未注册"异常。简短检索得出以下参考:
ATL 进程外回调接口上的"接口未注册"错误
但我使用 C++/CX,根本没有 IDL。我检查了ChatterBox演示(这是我的VoIP应用程序的起点) - 他们根本不使用Windows运行时事件。
所以我停止了朝这个方向的尝试。
另一种可能的方法可能是:
- 使用自定义事件结构的队列,从 C# 端轮询和处理此事件。
- 使用 C++/CX 中声明的接口作为事件处理程序。在 C# 端实现此接口。但是不确定它是否会将事件编组到主 UI 线程中。
相关文章:
- 如何将 txt 文件中的行分隔为组件C++
- Android NDK传感器向事件队列报告奇怪的间隔
- 从文本文件中读取时钟时间和事件时间并进行处理
- WMI检测进程创建事件-c++
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 处理闪烁窗口事件
- C++Builder中的OnClick事件签名存在问题
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 跟踪滚动条上的鼠标事件
- 什么是事件表 (wxWidgets)?
- 如何在 MFCaptureEngine 中获取"Camera removed"事件
- 到连接组件算法的问题(递归)
- 给定顺序中的事件处理
- 如何在Maya中选择自定义网格组件后立即发布用户事件
- 如何实现由TPAINTBOX创建的新组件的OnMousedown,OnMouseUp事件
- 递归禁用子小组件鼠标滚轮事件
- Windows 运行时 (WP 8) 进程外组件和引发/订阅事件
- 允许本机C++组件引发CLR异步事件
- 在创建子小组件后设置父小组件时,子小组件对事件是透明的
- 如何从本机组件向C#/XAML组件进行函数调用或触发事件