我試圖以編程方式在C#4中鏈接異步操作,例如寫入給定的流對象。我原本是這樣做的「手動」,掛鉤從一個操作到下一個回調,但我想我會嘗試.NET 4任務並行庫,以節省自己重新發明併發輪的麻煩。如何使用.NET 4中的任務並行庫鏈接異步操作?
首先,我總結我的異步調用的任務,像這樣:
public static Task CreateWriteTask(Stream stream, byte[] data)
{
return Task.Factory.FromAsync(stream.BeginWrite, stream.EndWrite, data, 0, data.Length, null);
}
延續做出鏈同步操作非常簡單(如果你不介意的不幸方法名):
public static Task ChainFlush(Stream stream, Task precedingTask)
{
return precedingTask.ContinueWith(x => stream.Flush());
}
但是沒有Task.ContinueWith
方法的版本接受與TaskFactory.FromAsync
相同的異步操作。
因此,假設我堅持使用第三方物流,我正在尋找正確的此方法的實現:
public static Task ChainWrite(Stream stream, byte[] data, Task precedingTask)
{
//?
}
TaskCreationOptions.AttachedToParent? – 2011-10-10 19:42:44