Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在cancel()上的SwingWorker doInBackground()中停止持久方法_Java_Swingworker - Fatal编程技术网

Java 在cancel()上的SwingWorker doInBackground()中停止持久方法

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),如何中断文件搜

有很多关于如何取消/停止SwingWorker的信息。但是,当从EDT调用
cancel
时,如何停止在
doInBackround()
方法中启动的持久方法,我找不到合适的解决方案


例如,如果使用
org.apache.commons.io.FileUtils.listFiles(file,FileUtils.getFileFilter(),DirectoryFileFilter.DIRECTORY)在
doInBackround()
方法中启动递归文件搜索,并且从EDT调用
取消(true)
,如何中断文件搜索?

您需要后台任务的协作才能停止它。应定期检查任务是否已取消,如果取消,应尽快返回


因此,您可以自己重新实现
listFiles()
方法,并在每次迭代时检查任务是否未被取消,或者使用肮脏的技巧,如果任务已被取消,则从文件筛选器内部抛出一些运行时异常(因为将为
listFiles()中的每个文件调用文件筛选器)
method inspects.

发生了什么,您尝试了什么?如何查看commons IO源代码,这似乎是一个相当大的努力,以正确的方式完成。我担心这样的问题可能是答案:-)无论如何,谢谢!只是想让您知道,它与经过调整的
listFiles()
版本完美配合。再次感谢你。