Was ist der richtige Weg, um Aufgaben bei der Rückgabe einer Aufgabe zu verketten?

Ich bin so so mit mit Aufgaben in C#, aber ich verwirrt, wenn ich versuche, um wieder eine Aufgabe aus einer Methode und die Methode werden mehrere Aufgaben in sich. So habe ich meine Methode, spin-up eine neue Aufgabe und mache dann alle nacheinander innerhalb von es? Es ist schwer zu wickeln Sie meinen Kopf herum, tun es alle mit .ContinueWith()

Beispiel:

public Task<string> GetSomeData(CancellationToken token)
{
    return Task.Factory.StartNew(() =>
    {
        token.ThrowIfCancellationRequested();

        var initialData = GetSomeInteger(token).Result;

        return GetSomeString(initialData, token).Result;
    });
}

public Task<int> GetSomeInteger(CancellationToken token)
{
    return Task<int>.Factory.StartNew(() =>
    {
        return 4;
    }, token);
}

public Task<string> GetSomeString(int value, CancellationToken token)
{
    return Task<string>.Factory.StartNew(() =>
    {
        return value.ToString();
    }, token);
}

Ich bin mir nicht sicher wie sonst zu schreiben, diese Methode zu machen, verwenden Sie Aufgaben richtig. Ich denke, ich fühle mich einfach wie es sein sollte .ContinueWith in es oder etwas.

Möglich beheben??

public Task<string> GetSomeData(CancellationToken token)
{
    return GetSomeInteger(token).ContinueWith((prevTask) =>
    {
        return GetSomeString(prevTask.Result, token);
    }, token).Unwrap();
}

InformationsquelleAutor der Frage Travyguy9 | 2012-08-02

Schreibe einen Kommentar