如果取消了SwingWorker任务,我怎么知道中断方法何时完成

时间:2017-06-14 11:04:03

标签: java swingworker

如果SwingWorker任务被取消,我怎么知道中断方法何时完成。

我简化了代码。 FixSongsController.start()在后​​台运行。完成后,将创建一个报告,完成后,将使用done()方法显示报告。

正在运行一个进度对话框,如果用户选择取消(FixSongsController.start()正在运行时),则会在cancel(true)上调用SwingWorker,导致中断被发送到{ {1}}。问题是,一旦发送,它就会调用FixSongsController.start()

我不想在createReport().实际完成之前开始创建报告。我无法确定如何确定发生的时间。

如果我从FixSongsController.start()删除了createReport代码,并且对修复歌曲进行了FixSongsDialog检查,则问题会更严重,因为isCancelled()尝试显示报告之前创建。

我认为我可以使用FixSongsDialog但是一旦SwingWorker.getState()被调用cancelTask任务被中断,即使doInBackground()方法仍在整理,很快就会完成。< / p>

然后我想我可以在FixSongsController块中的SwingWorker.setProgress()方法中使用FixSongsController.start()并添加一个只在进度值发生变化后才会调用finally的侦听器但{ {1}}受到保护,因此我无法在showReport类本身之外访问它。

setProgress班级

FixSongs

进度对话类

SwingWorker

0 个答案:

没有答案