意外的 IConnectionPointImpl::不建议调用 Windows Embedded Compact 7
Unexpected IConnectionPointImpl::Unadvise call on Windows Embedded Compact 7
我们在Win CE6上运行了一个更大的软件,没有问题。核心功能在提供连接点的 COM 服务器 DLL 中实现。COM 客户端程序在程序启动时为连接点注册事件处理程序,以获取状态通知等。在程序退出时,它通过调用相应的IConnectionPointImpl::Unadvise
方法来注销处理程序。
现在,我们正在移植程序以在 Win EC 7 上运行。适用于 Win EC 7 的新主板支持包 (BSP( 运行良好。还有具有不同选项的不同版本,在不同的时间使用不同的Microsoft来源创建,但我们的软件始终显示相同的问题。
在程序启动时,启动后 ~10 秒,在所有注册的事件处理程序上意外调用IConnectionPointImpl::Unadvise
。我们的源代码中只有一个调用IConnectionPointImpl::Unadvise
的方法,这绝对不会执行。
问题出现~95%,但有时程序启动和运行没有问题。由于程序的大小,我们不能使用调试器,性能很差。
我们猜测,COM 运行时出于某些原因调用IConnectionPointImpl::Unadvise
方法。但我们不知道如何防止这种情况。
有没有人观察到同样的问题?是否有可用的解决方案/解决方法?谢谢。
所以我们终于找到了解决这个问题的方法。
我们消除了对MarshalByReObject
的依赖,并将其替换为ISerializable
的正确实现。
这使我们能够在自定义 AppDomain 中正确加载我们的程序集和事件不再松散。
但这对加载程序集配置文件的路径有副作用。为了解决这个问题,我们还实现了一个AppDomain.AssemblyResolve
事件,允许我们将加载重定向到适当的位置。
我希望这可以帮助您;)
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux for Windows上编译C++代码时出错
- 在Windows上用C++裁剪HBITMAP
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- Windows/Cygwin - 不能使用 pybind11 - 犯错误
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 意外的 IConnectionPointImpl::不建议调用 Windows Embedded Compact 7
- 如何在"XAML for Windows Embedded (Compact 2013)"中切换图像
- UCRTbase.dll涉及TCP通信的C ++ Windows Embedded Standard崩溃
- 哪个文件在Windows Embedded Compact 7.0上配置缓存
- 我的应用程序创建的Windows CE/Embedded C++非易失性文件在重新启动时被删除
- QueryPerformanceCounter() Test for Windows Embedded Compact
- Windows Embedded Compact 2013 - 初始应用程序焦点
- 如何枚举连接到Windows Embedded 7上根集线器的第一个端口的USB集线器
- 请帮助我检查Silverlight for Windows Embedded中有关数据绑定的代码
- ShellExecute in Windows Embedded