1

Windows システム コール (ReadFile() や WriteFile() など) を行う ActiveX (COM) DLL があります。メインの Python GUI スレッドからは問題なく動作します。しかし、スレッドから呼び出されると Python GUI がクラッシュします。私はオンラインでいくつかの調査を行っており、GILで何かをする必要があると考えています. 私は正しい軌道に乗っていますか?または、私を正しい方向に向けてください。ありがとうございました!

4

2 に答える 2

0

Vladimir が述べたように、お使いの COM コンポーネントはマルチスレッド セーフではない可能性があります。DLL が登録されている "Apartment" タイプをテストすることもできます。この記事では、この問題に関する概要を説明しています。

于 2012-05-30T09:02:09.900 に答える
0

コードを見ずに何かを言うのは難しいですが、可能性としては次のいずれかです。

  1. あなたの ActiveX はマルチスレッドをサポートしていません (それらの多くはサポートしていません)。別のスレッドからオブジェクトを操作しようとしています。
  2. ActiveX を含む DLL はスレッドごとの初期化を実行しますが、別のスレッドから呼び出した場合は初期化されません。

とにかく、GIL については何も言えませんが、過去に ActiveX を扱ったことがあるので、問題の原因はおそらく ActiveX にあると思います。

于 2012-05-29T18:38:35.290 に答える