2

Windows/QT アプリケーションが一貫して終了しません。

オブジェクトをクリーンアップした後、QProcess オブジェクトを削除しようとしています。ただし、プロセスをクリーンアップするわけではなく、タスクマネージャーに表示できます.

    delete process;
    process = 0;

一部のスレッドがバックグラウンドで実行されているため、削除プロセスが機能していないと思います。すべてのスレッドが正常に閉じられるようにしたいので、プロセスは終了します。

これを行う正しい方法を教えてください。

4

2 に答える 2

0

問題の 1 つは、QProcess オブジェクトが子スレッドを表しておらず、独立したプロセスを表していることです。おそらく、QThreadオブジェクトを使用する必要があります。

QThread オブジェクトを使用すると、子スレッドの正確な内容に応じて、quit、exit、wait、および terminate の組み合わせを使用できます。違いについてはドキュメントを確認してください。

于 2012-05-14T19:40:46.977 に答える
0

タスク マネージャーには QProcess オブジェクトが表示されず、そのオブジェクトを削除してもタスク マネージャーには影響しません。プロセスで実行中のコードがまだある場合、そのプロセスは OS に従って存在し続けます。

本当にプロセスを終了したい場合は、Win32 関数を呼び出すことができますExitProcess()。必要なものがすべて保存されていることを確認してください。

通常、すべてのスレッドの実行が停止すると、Qt はプロセスを終了します。

于 2012-05-14T19:37:33.250 に答える