首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows运行时(WP 8)进程外组件和引发/订阅事件

Windows运行时(WP 8)进程外组件和引发/订阅事件
EN

Stack Overflow用户
提问于 2015-04-10 08:50:03
回答 1查看 100关注 0票数 0

我用自己的后台线程制作了进程中的WR/WP8组件。它在内部处理SIP堆栈,并在后台线程中运行。它是从ChatterBox MSDN示例中修改的代码。https://code.msdn.microsoft.com/windowsapps/ChatterBox-VoIP-sample-app-b1e63b8b

最后几天,我添加委托来从组件中引发事件。在C++/CX中是:

代码语言:javascript
复制
  public delegate void OnLogMessage(Platform::String^ msg);

  public ref class Logger sealed
  {

  public:

    Logger();
    virtual ~Logger();

    void FlushLog();

    event OnLogMessage^ OnLogMessage;
  };

在C#代码中有对事件的订阅:

代码语言:javascript
复制
BackgroundProcessController.Instance.Logger.OnLogMessage += new   IntTalk.OnLogMessage(mLogger_OnLogMessage);

它造得很好。

但是在调试期间,我看到了异常:

代码语言:javascript
复制
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文件--它们包括一些事件代码。

造成这一问题的原因是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-03 18:50:17

在本机模式下调试时,我观察到的相同代码是“接口未注册”异常。通过简短的搜索,得到了以下参考:

'Interface not Registered' error on ATL out-of-process callback interface

但是我使用C++/CX,根本没有IDL。我检查了ChatterBox演示程序(这是我的VoIP应用程序的起点)--它们根本不使用。

所以我停止了朝这个方向的尝试。

另一种可能的办法是:

  • 使用自定义事件结构的队列,从C#端轮询和处理此事件。
  • 使用C++/CX中声明的接口作为事件处理程序。在C#端实现此接口。但是,不确定它是否会将事件分解到主UI线程中。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29557133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档