如果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