-1

こんにちは皆さん、私は少し問題があります。bitbucket に新しいリビジョンが存在するかどうかを確認するプログラムを終了しました。アプリケーションを閉じてスレッドがまだ実行されている場合を除いて、すべて問題ありません。プログラムはタスクマネージャーに表示されます。EVT_CLOSE のコードは次のとおりです。

    def on_close(self, event):
    if self._thread is not None and self._thread.isAlive():
        self._thread.interrupt.set()
    self.Destroy()
    event.Skip()

スレッドはデーモンのように実行されています。

どうしたの?

編集:私は理解し、スレッドで join() メソッドを実行しようとしました。しかし、私は働きません。

    def on_close(self, event):
if self._thread is not None and self._thread.isAlive():
    self._thread.join()
    self._thread.interrupt.set()
self.Destroy()
event.Skip()

と:

        def on_close(self, event):
if self._thread is not None and self._thread.isAlive():
    self._thread.join(10)
    self._thread.interrupt.set()
self.Destroy()
event.Skip()
4

1 に答える 1

0

イベント ハンドラーを閉じるには、スレッドを終了させるか、スレッドが終了するのを待つ必要があります。通常、スレッドの join() メソッドを使用してこれを行います。スレッドが別のプロセスを開いていて、そのプロセスに時間がかかっている場合は、実行中のプロセスを強制終了して、スレッドが復帰できるようにすることをお勧めします。

于 2012-10-08T14:15:44.313 に答える