-2

我写了一个 GUI 程序,当程序运行时(写入文件),关闭按钮不起作用,所以当它运行时我无法停止它。有人知道为什么吗?我可以停止它(当它正在写入文件时)?

4

1 回答 1

3

如果没有进一步的证据,我猜你是在 Event Dispatching Thread 的上下文中写出你的文件。

这是非常非常糟糕的。EDT 负责(除其他外)处理所有发生的 UI 事件,包括关闭窗口的请求。但是,如果您使用耗时的任务(如 I/O、循环Thread#sleep或任何其他阻塞操作)阻塞此线程,则 EDT 无法处理队列中累积的任何事件。

在这种情况下,最好的办法是使用 aSwingWorker将文件的写入卸载到另一个线程。查看Swing 中的并发以获取更多信息

于 2012-12-11T09:10:14.023 回答