ich nach dem beschriebenen Muster an: https://blogs.msdn.microsoft.com/dotnet/2012/06/06/async-in-4-5-enabling-progress-and-cancellation-in-async-apis/ so bin ich IProgress.Report in meiner Asynchron-Methode mit dem Fortschritt zu berichten.Kann ich warte auf IProgress.Report
public async Task MyFirstTaskAsync(IProgress<T> progress)
{
progress.report(some T)
}
public async Task MySecondTaskAsync(IProgress<T> progress)
{
progress.report(some T)
}
Auf dem UI-Thread, werde ich MyFirstTaskAsync und MySecondTaskAsync nacheinander aufrufen.
var reportProgress1 = new Action<T> (x =>Console.WriteLine("First Step Completed"))
var reportProgress2 = new Action<T> (x =>Console.WriteLine("Last Step Completed"))
var progress1 = new Progress<T>(reportProgress1)
var progress2 = new Progress<T>(reportProgress2)
await MyFirstTaskAsync(progress1)
Console.WriteLine("Second Step Comppleted")
await MySecondTaskAsync(progress2)
//code in reportProgress1.report can actually be executed at this point...
hier Mein Problem in reportProgress1.report ist Code tatsächlich nach MyFirstTaskAsync Abschluss erhalten ausgeführt kann, was irgendwie vermasselt den Fortschrittsbericht, weil ich die erste await erwartete können innerhalb der ersten Asynchron-Methode bis zum Fortschrittsbericht erwarten ist auch abgeschlossen.
Ist das ein Verhalten, das ich irgendwie an meinen Bedarf anpassen kann?
Danke.
Bearbeiten: Angenommen, es gibt nicht-asynchronen Code zwischen zwei Aufgaben, und diese drei zusammen vervollständigen den Gesamtprozess und jeder von ihnen wird den Fortschritt während ihrer Ausführung aktualisieren, so dass sie die Benutzeroberfläche in einem aktualisieren müssen Reihenfolge ..
Danke. Ich habe die Frage aktualisiert, um mein Problem zu klären. Im Grunde sind es die Aufgaben, die zusammen einen Gesamtprozess abschließen, also möchte ich, dass ihre Fortschrittsaktualisierungen in einer bestimmten Reihenfolge ablaufen. – Godsent