17 Stimmen

Wie verkette ich asynchrone Operationen mit der Task-Parallel-Bibliothek in .NET 4?

Ich versuche, asynchrone Operationen in C#4 programmatisch zu verketten, wie z. B. Writes zu einem bestimmten Stream-Objekt. Ursprünglich tat ich dies "manuell", Hooking Rückrufe von einer Operation zur nächsten, aber ich dachte, ich würde versuchen, die .NET 4 Task Parallel Library, um mir die Mühe zu ersparen, neu zu erfinden, die gleichzeitige Rad.

Für den Anfang verpacke ich meine asynchronen Aufrufe in Tasks wie folgt:

public static Task CreateWriteTask(Stream stream, byte[] data)
{
    return Task.Factory.FromAsync(stream.BeginWrite, stream.EndWrite, data, 0, data.Length, null);
}

Fortsetzungen haben die Verkettung synchroner Operationen sehr einfach gemacht (wenn Sie den unglücklichen Methodennamen entschuldigen):

public static Task ChainFlush(Stream stream, Task precedingTask)
{
    return precedingTask.ContinueWith(x => stream.Flush());
}

Es gibt jedoch keine Version des Task.ContinueWith Methode, die eine asynchrone Operation auf dieselbe Weise akzeptiert wie TaskFactory.FromAsync .

Also, vorausgesetzt, dass ich mit der Verwendung der TPL beharren, was ich für die korrekte Implementierung dieser Methode suchen:

public static Task ChainWrite(Stream stream, byte[] data, Task precedingTask)
{
    //?
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X