从Python线程调用的ActiveX DLL

时间:2012-05-29 18:04:08

标签: python multithreading activex

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

2 个答案:

答案 0 :(得分:0)

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

  1. 您的ActiveX根本不支持多线程(其中许多不支持),并且您尝试使用来自不同线程的对象。
  2. 包含ActiveX的DLL执行一些每线程初始化,但是当你从另一个线程调用它时,它没有被初始化。
  3. 无论如何,我不能说GIL,但我过去曾经处理过ActiveX,我相信很可能是问题的根源是ActiveX。

答案 1 :(得分:0)

正如Vladimir所说,我可能认为你的COM组件不是多线程安全的,你可以测试你的DLL注册的“公寓”类型。这个article给出了关于这个问题的一个很好的概述。