none
连接点调用后程序崩溃,输出中线程退出代码为0xc0000417 RRS feed

  • 问题

  • WPF程序调用我的CLI库,CLI库会调用COM接口。接口被调用后,会触发一个连接点。接口是在WPF的UI线程中调用的。

    在CLI中我启动了一个线程用于Advise连接点,线程开始处调用了CoInitializeEx(NULL, COINIT_MULTITHREADED)。现在的问题是,该连接点的部分函数调用成功,但是有的函数会导致异常,使得程序崩溃。这个函数即使直接返回S_OK,也会导致程序退出。这是怎么回事呢?

    COM是使用ATL编写的,定义了_ATL_FREE_THREADED

    2017年12月29日 9:12

全部回复

  • Hi,

    欢迎在MSDN论坛发帖。

    你有得到什么错误信息吗?知道是在哪个函数中出现错误吗?

    还有你在com中实现时,使用的是什么线程模式,是 Single-Threaded Apartments模式吗? 在这种模式下是不能访问其他线程的范围。

    是不是UI线程和advise连接点的线程,出现什么交互访问。 这种模式你可以在创建com的时候去选择。

    你方便把可重现问题的代码放到one drive上面吗? 这方便社区成员找到解决方法。 请不要保护私人信息在代码中。

    我这边也找到WPF 在调用COM组件的时候,对多线程的一些理解,希望对你有所帮助。

    Hosting WPF UI cross-thread and cross-process 

    WPF and Win32 Interoperation

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年1月1日 5:17
    版主