是否有正确的方法从复杂的SwingWorker任务发布

时间:2015-11-02 16:56:51

标签: recursion publish swingworker

我的后台任务涉及一个递归过程,以便从SwingWorker任务本身中删除几个实际工作。这个过程从通过文件夹结构递归开始,如下所示:

(?<!\w)\d_[a-zA-Z]+_test(?!\w)

在FileProcessor中,还有另一个(更复杂的)递归过程,它处理文件的内容,从每个输入文件生成多个输出文件。我想在较低级别的递归过程中向UI报告进度。

有没有正确的方法来处理这个问题?在事情发展变得更加复杂之前,这个项目能够处理顶级SwingWorker类中的所有内容,并且只需使用

进行报告
if ( inputFile.isDirectory ( ) )
{
    new FolderProcessor ( inputFile ).execute ( ... ) ;
}
else
{
    new FileProcessor ( inputFile , ... ).execute ( ... ) ;
}

提前致谢!

1 个答案:

答案 0 :(得分:0)

我认为正确答案可能是实施Observer模式。也就是说,将“this”传递给任何组件任务;

new ComponentTask ( ... , this ).execute ( ... ) ;

new ComponentTask ( ... ).execute ( ... , this ) ;

在SwingWorker中实现一个方法

public void sendProgress(final String text)
{ publish(text) ; }

让组件任务在传递的对象上调用sendProgress,以将信息传递回UI。

即使它不是“正确的”,它似乎也有效,而且感觉正确。

相关问题