Java 在cancel()上的SwingWorker doInBackground()中停止持久方法
有很多关于如何取消/停止SwingWorker的信息。但是,当从EDT调用Java 在cancel()上的SwingWorker doInBackground()中停止持久方法,java,swingworker,Java,Swingworker,有很多关于如何取消/停止SwingWorker的信息。但是,当从EDT调用cancel时,如何停止在doInBackround()方法中启动的持久方法,我找不到合适的解决方案 例如,如果使用org.apache.commons.io.FileUtils.listFiles(file,FileUtils.getFileFilter(),DirectoryFileFilter.DIRECTORY)在doInBackround()方法中启动递归文件搜索,并且从EDT调用取消(true),如何中断文件搜
cancel
时,如何停止在doInBackround()
方法中启动的持久方法,我找不到合适的解决方案
例如,如果使用
org.apache.commons.io.FileUtils.listFiles(file,FileUtils.getFileFilter(),DirectoryFileFilter.DIRECTORY)在doInBackround()
方法中启动递归文件搜索代码>,并且从EDT调用取消(true)
,如何中断文件搜索?您需要后台任务的协作才能停止它。应定期检查任务是否已取消,如果取消,应尽快返回
因此,您可以自己重新实现listFiles()
方法,并在每次迭代时检查任务是否未被取消,或者使用肮脏的技巧,如果任务已被取消,则从文件筛选器内部抛出一些运行时异常(因为将为listFiles()中的每个文件调用文件筛选器)
method inspects.发生了什么,您尝试了什么?如何查看commons IO源代码,这似乎是一个相当大的努力,以正确的方式完成。我担心这样的问题可能是答案:-)无论如何,谢谢!只是想让您知道,它与经过调整的listFiles()
版本完美配合。再次感谢你。