3
我有一個鏈接任務2使用類似這樣的地方任務1初始化,並返回一個IDisposable
對象的場景:如何正確處理一次性任務結果?
Task.Factory.StartNew<Stream>(() =>
{
// open and write stream
})
.ContinueWith(prevTask =>
{
var stream = prevTask.Result; // possible AggregateException
// read stream and close it
});
的問題是:如何正確處置的對象?一個有趣的案例可能是這樣的:Task1打開+讀取流,然後發生異常,在Task2中重新生成異常,因此Task2將看不到仍然打開的原始流。
有沒有像using() { ... }
這樣的一些衆所周知的模式來做到這一點?
不能使用await關鍵字嗎? – Olivier
不,它是.NET4代碼 – metalheart
@metalheart:您仍然可以使用Microsoft.Bcl.Async程序包在.NET 4中使用async/await。您確實需要C#5編譯器(VS2012或更高版本)。 –