-2

GUIプログラムを作成しましたが、プログラムの実行中(ファイルの書き込み)に閉じるボタンが機能しないため、実行中に停止できません。誰もが理由を知っていますか?そして、私はそれを止めることができますか(それがファイルを書いているとき)?

4

1 に答える 1

3

これ以上の証拠がなければ、イベント ディスパッチ スレッドのコンテキストでファイルを書き出していると思います。

これは非常に悪いです。EDT は、ウィンドウを閉じる要求など、発生するすべての UI イベントの処理を (とりわけ) 担当します。ただし、このスレッドを時間のかかるタスク (I/O、ループ、Thread#sleepまたはその他のブロック操作など) でブロックすると、EDT はキューに蓄積されたイベントを処理できなくなります。

この場合、SwingWorkerファイルの書き込みを別のスレッドにオフロードするために a を使用することをお勧めします。詳細については、Swing の同時実行を確認してください。

于 2012-12-11T09:10:14.023 に答える