QThreadクラスではself.terminate()
、GUIクラスではself.thread.terminate()
を使ってみました。私はまた両方の場合にself.wait()
を入れてみました。ただし、次の2つのシナリオが発生します。QThreadをGUIアプリケーションから正しく終了するにはどうすればいいですか?
1)スレッドがまったく終了せず、GUIが停止してスレッドが終了するのを待っています。スレッドが終了すると、GUIはフリーズし、すべて正常に戻ります。
2)スレッドは実際に終了しますが、同時にアプリケーション全体がフリーズします。
self.thread.exit()
も試してみました。喜びはありません。
さらに明確にするために、GUIの中にユーザアボートボタンを実装しようとしています。このボタンは、任意の時点でスレッドの実行を終了します。
ありがとうございます。
EDIT:QThreadのためのQtのドキュメントから
def on_abort_clicked(self):
self.thread = threadmodule.Thread()
#Tried the following, also one by one and altogether:
self.thread.exit()
self.thread.wait()
self.thread.quit()
self.thread.terminate()
#Again, none work
注:self.terminate ===(self.terminated = true)、それ以上はありません。すべての実装の99% – TheHorse
ありがとうございますが、これは本当に問題の解決には役立ちません。 –
スレッドを安全に終了させる方法は1つだけです。すべてのタスクを終了させるようにしてください。これを実行するには、ハードタスクを実行する前にthread.terminatedをチェックする必要があります。 – TheHorse