Ich lerne async und erwarte die Operation in C#. Ich konnte den Ablauf der Ausführung nicht verstehen, wenn mehrere asynchrone Operationen ausgeführt werden. für zB: Ich habe den folgenden Code in meiner C# -Anwendung.UnderstandingAync und erwarte in C#
await repository.GetAsync(values);//execute for 10 sec
var result = repository.setAsync(data); //20 sec
dataresult = await repository.GetAsync(result);//execute for 10 sec
Ich habe drei async Anrufe hier.
Nach meinem Verständnis wird jeder Anruf einen Rückruf haben und dies wird nicht auf eine Aktion warten.
Also, wie kann ich sicherstellen, dass die Aktion abgeschlossen ist?
Das repository.setAsync wird vor dem repository.GetAsync (values) ausgeführt. oder dies wird erst nach der Ausführung von repository.GetAsync (Werte) ausgeführt?
Also, was wird die Reihenfolge der Ausführung sein?
1)
await repository.GetAsync(values);//started await method execution,since there is no callback it will not set and will start execute the next before complete this.
var result = repository.setAsync(data); //will execute for 20 sec. Once completed will go to previous thread and complete that.
2)
await repository.GetAsync(values);//started await method execution,complete it and move to the next line.
var result = repository.setAsync(data); //will execute for 20 sec.
Wenn Sie etwas synchron ausführen, Sie warten, bis es, bevor sie zu einer anderen Aufgabe zu beenden. Wenn Sie etwas asynchron ausführen, können Sie zu einer anderen Task wechseln, bevor sie beendet wird. Sie wartet jedoch darauf, dass die asynchrone Operation beendet wird. Warum dieser Widerspruch?
Ich möchte das Datenergebnis erst nach Abschluss der Operation zurückgeben. Ich fühle, dass dies im Gegensatz zu Feuer und vergessen ist. ob diese zwei gleiche oder unterschiedliche Konzepte sind? Wie nach dem unten angegebenen Link reference
Das await Schlüsselwort nicht den Faden nicht blockiert, bis die Aufgabe abgeschlossen ist.
Aber von den Antworten, die hier gepostet werden, habe ich verstanden, dass dies die Ausführung pausiert. was wahr ist? Verpasse ich etwas?
Einfach gesagt: 'await' ist ein„asynchrone warten“, so dass die Methode * * wird warten, bis es abgeschlossen ist, aber das * Thread * ist nicht blockiert. Sie können mein [async Intro] (http://blog.stephencleary.com/2012/02/async-and-wait.html) hilfreich finden. –