我的后台任务涉及一个递归过程,以便从SwingWorker任务本身中删除几个实际工作。这个过程从通过文件夹结构递归开始,如下所示:
(?<!\w)\d_[a-zA-Z]+_test(?!\w)
在FileProcessor中,还有另一个(更复杂的)递归过程,它处理文件的内容,从每个输入文件生成多个输出文件。我想在较低级别的递归过程中向UI报告进度。
有没有正确的方法来处理这个问题?在事情发展变得更加复杂之前,这个项目能够处理顶级SwingWorker类中的所有内容,并且只需使用
进行报告if ( inputFile.isDirectory ( ) )
{
new FolderProcessor ( inputFile ).execute ( ... ) ;
}
else
{
new FileProcessor ( inputFile , ... ).execute ( ... ) ;
}
提前致谢!
答案 0 :(得分:0)
我认为正确答案可能是实施Observer模式。也就是说,将“this”传递给任何组件任务;
new ComponentTask ( ... , this ).execute ( ... ) ;
或
new ComponentTask ( ... ).execute ( ... , this ) ;
在SwingWorker中实现一个方法
public void sendProgress(final String text)
{ publish(text) ; }
让组件任务在传递的对象上调用sendProgress,以将信息传递回UI。
即使它不是“正确的”,它似乎也有效,而且感觉正确。