2011-04-18 61 views
0

我已經設置了一個過程來創建新任務來處理文件處理。我收到並且未處理異常錯誤並且只需點擊繼續按鈕就會出現問題,主進程繼續運行。現在我還發現,在子任務中,我遇到了文件衝突錯誤,並且任務以單獨的.exe運行,我的印象是一切都是線程安全的。因此,第一個問題是在主流程中創建任務.GProcess是一個由6個類組成的完整項目。這被添加作爲類庫引用到主過程Form1類處理任務工廠例外

Public Class Form1 
..Private parser as GProcess.module = new GProcess.module() 

dim factory as new taskfactory 
factory.startnew(address of parser.main) 

try 
    task.waitall() 
catch ae as aggregateexception 
    for each ex in ae.innerexceptions 
    logs.insert(ex.message.tostring) 
    next 
finally 
    parser.ctsources.cancel() 
end try 

現在我從MSDN得到了aggregateexception的事情,不知道如何實現它,但是基本上我想做什麼是取消導致異常任務並contiue運行所有其他任務,並捕獲文件,取消的任務正在工作,並將名稱保存到我的日誌,或者如果可能的話,用它正在處理的文件重新啓動該任務..

現在對於第二個問題,我有一個xmlwriter被創建時,任何應該創建它自己的實例的任務訪問類,所以不知道爲什麼會有衝突,但如果它發生,任務/線程只是取消或做wa它訪問該文件。

.... 
public class filecleaner 

private xmlfile as string = directoryPath & filename 
private xwriter as xmltextwriter = new xmltextwriter(xmlfile,nothing) 
.... 

回答

1

關於第二個問題,任務不會等待訪問文件,它會拋出一個異常,你必須抓住,稍停,然後再試一次(最多某些數量限制,我猜)如果你想要那種行爲。

首先,我不確定是否有足夠的可以繼續下去。例如,你爲什麼說「這些任務以單獨的.exe運行」?例如,如果你只是在背景工作者對象上旋轉,它們不會作爲單獨的「進程」(即exe)運行,它們只是線程。

這段代碼中沒有任何東西會暗示你爲你的任務獲得了獨立的進程,但是,根據在startne中發生的情況,我想這是可能的。

+0

感謝您的回覆......我添加了一個上面的編輯,但也澄清..我已經將整個project.exe作爲參考添加到主進程中。然後將此作爲任務調用...我將使用您的對第二個問題的建議 – vbNewbie 2011-04-18 16:58:01