2015-04-10 2 views
0

Я создал компонент WR/WP8, не соответствующий процессу, с собственным фоновым потоком. Он обрабатывает SIP-стек внутри и работает в фоновом потоке. Это модифицированный код из примера MSDN от ChatterBox. https://code.msdn.microsoft.com/windowsapps/ChatterBox-VoIP-sample-app-b1e63b8bWindows Runtime (WP 8) из компонентов процесса и событий подъема/подписки

В последние дни я добавляю делегатов для сбора событий из компонента. В 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. 

Proxy окурок DLL генерируется. Я проверил файлы .h/.c - они включают в себя код для событий.

Что может быть причиной этой проблемы?

ответ

0

При отладке в основном режиме того же кода я наблюдал исключение «Интерфейс без регистрации». Короткий поиск привел в этой ссылке:

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

Но я использую C++/CX, не IDL вообще. Я проверил демонстрацию ChatterBox (которая стала отправной точкой для моего VoIP-приложения) - они вообще не используют события Windows Runtime.

Так что я остановил свои попытки в этом направлении.

Еще возможными способами могут быть:

  • использования очереди пользовательских структур событий, опрос и обработать это событие из C# стороны.
  • интерфейс использования, объявленный в C++/CX как обработчик событий. Внедрите этот интерфейс на стороне C#. Не уверен, что если он будет маршировать события в основной поток пользовательского интерфейса.
+0

Несколько слов о втором подходе - события не сортируются в основной поток пользовательского интерфейса. Во всяком случае, это приемлемо для меня. – Dmytro

 Смежные вопросы

  • Нет связанных вопросов^_^