2015-11-02 56 views
0

我的後臺任務涉及一個遞歸過程,以便實際工作正在從SwingWorker任務本身中完成幾次。這一過程通過一個文件夾結構遞歸,這樣啓動的:是否有從複雜的SwingWorker任務發佈的正確方法

if (inputFile.isDirectory ()) 
{ 
    new FolderProcessor (inputFile).execute (...) ; 
} 
else 
{ 
    new FileProcessor (inputFile , ...).execute (...) ; 
} 

在FileProcessor存在另一(更復雜)的遞歸過程,與該文件的內容涉及,從每個輸入文件產生多個輸出文件。我想從低級遞歸過程中報告進度回到UI。

有沒有正確的方法來處理這個問題?演變,變得更加複雜的事情之前,這個項目才得以頂級SwingWorker類中處理一切,並能夠通過提前使用

publish("producing output file " + outputFileName + " from " + inputFileName) ; 

由於只是簡單地報告!

回答

0

我相信正確的答案可能是實施Observer模式。也就是說,將「this」傳遞給任何組件任務;

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

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

實現一種方法中的SwingWorker

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

具有組件任務調用sendProgress傳遞的對象上,以將信息傳遞返回到UI。

即使它不是「正確」,它似乎工作,它感覺很好。

相關問題