Laden...

Async await Task aber wie funktionieren sie?

Erstellt von Steven97 vor 2 Jahren Letzter Beitrag vor 2 Jahren 220 Views
S
Steven97 Themenstarter:in
10 Beiträge seit 2022
vor 2 Jahren
Async await Task aber wie funktionieren sie?

Habe ein paar Codezeilen gefunden und möchte sie gerne an meinem Project anwenden.
Allerdings verstehe ich nicht so richtig was da passiert, Threads und Stopwatch waren noch sehr einfach aber hier verzweifel ich an der Suche meine Code richtig anzuwenden.

Ich möchte das der erste Task zum schluss einen zweiten startet und das der zweite natürlich vorher wartet bis der erste abgeschlossen ist.
Wie müsste denn der Code dann aussehen?
Wie wende ich den CancellationToken an?
In meinen Tasks möchte ich eine Schleife laufen lassen die dann unterbrochen wird sobald der nächste Task startet.
Den async await Task werde ich wohl benötigen da sonst meine GUI einfriert.


private async void Form1_KeyDown(object sender, KeyEventArgs e)
{
    var cts = new CancellationTokenSource(10000);
    var task = Task.Run(() => Search(cts.Token));
    try
    {
        var result = await task;
        // handle result
    }
    catch (OperationCanceledException)
    {
        // handle cancelled
    }
    catch (Exception)
    {
        // handle other exceptions
    }
}

public int Search(CancellationToken cancel)
{
    while (true)
    {
        cancel.ThrowIfCancellationRequested();
        // Do searching
        if (found)
            return result;
    }
}

Gruß
Steven

F
10.010 Beiträge seit 2004
vor 2 Jahren

Wie in dem anderen Thread schon gesagt, statt irgendwas zu programmieren und dann fragen zu stellen,
sag was du erreichen willst, nicht wie du es machen willst.
Und mach nicht einfach einen neuen Thread auf, nur weil dir die Antworten im anderen nicht gefallen.

Und hör auf wild zu probieren, lies dir die Grundlagen durch.
Asynchrone Programmierung in C#
Das gilt für alles.
Einfach irgendwelchen Code zu kopieren ohne die Grundlagen zu beherrschen
bringt nur Frust auf deiner und unserer Seite