2012-09-07 70 views
0

我正在使用並行任務讀取一些文件。在此操作期間,如果我取消任務,文件句柄不會關閉。任務被成功取消。看起來我需要做更多的事情來在取消期間關閉文件句柄,但無法弄清楚我需要做什麼。我假設任務取消將處置所有對象,但不是這種情況。 任何幫助,非常感謝。任務並行庫文件句柄

回答

1

取消任務不會處理任何事情。我並不知道你是如何取消或開始你的Task,因爲你沒有顯示任何代碼,但推薦的方法是調用Cancel()任務CancellationTokenSource的方法。當你的任務正在做它應該做的事時,它應該檢查令牌屬性IsCancellationRequestedThis post解釋程序相當不錯。

清理完全取決於你。垃圾回收器會殺死普通對象,但是你需要調用Dispose,Close或者等價於你正在使用的任何昂貴的對象。

你有幾個選擇,手動調用Dispose,使用using塊或實現某種形式的工作單元模式。

+2

我認爲更好的方法來測試取消是調用['ThrowIfCancellationRequested()'](http://msdn.microsoft.com/en-us/library/system.threading.cancellationtoken.throwifcancellationrequested),大多數時間。 – svick