从 Python 线程调用的 ActiveX DLL



我有一个ActiveX (COM) DLL,它可以进行Windows系统调用(例如ReadFile()和WriteFile())。它从主要的Python GUI线程工作正常。但是从线程调用时会崩溃我的 Python GUI。我正在网上做一些研究,我想我需要对 GIL 做点什么。我走在正确的轨道上吗?或者请指出我正确的方向。谢谢!

没有看到代码很难说什么,但有可能:

  1. 您的 ActiveX 根本不支持多线程处理(其中许多不支持),并且您尝试使用来自不同线程的对象。
  2. 包含 ActiveX 的 DLL 执行一些每线程初始化,但当您从另一个线程调用它时,它不会初始化。

无论如何,我不能说任何关于 GIL 的事情,但是我过去处理过 ActiveX,我相信问题的根源很可能是 ActiveX。

正如 Vladimir 提到的,我可能是您的 COM 组件不是多线程安全的,您可能会测试您的 DLL 注册的"公寓"类型。本文很好地概述了此问题。

最新更新