Ich habe ein wenig gelesen, und denke, ich habe die Grundlagen der abwarten und async Keywords, in Bezug auf System.Threading.Task.Warten auf Aufgaben: Zurück Aufgabe oder warten, wenn kein Code nach dem warten
Ich bin nicht sicher, ob ich über ein kleines Problem richtig bin, und suche nach Verifizierung oder für jemanden, der mich korrigiert.
ich ein asynchrones Verfahren bin Umsetzung mit dieser Signatur:
public Task ProcessUploadedFile(FileInfo info, string contentType);
Natürlich, wenn ich etwas innerhalb der Methode abwarten will, muss ich das Asynchron-Schlüsselwort in die Signatur hinzuzufügen,
Meine Frage ist dies: Wenn die letzte Sache, die meine Methode tut, eine andere Async-Methode aufruft oder eine Aufgabe zurückgibt, gibt es keinen Grund, darauf zu warten?
Eg.
1:
public async Task ProcessUploadedFile(FileInfo info, string contentType)
{
foreach (var something in someCollection)
DoSomething();
DoSomethingElse();
await DoMethodAsync();
}
2:
public Task ProcessUploadedFile(FileInfo info, string contentType)
{
foreach (var something in someCollection)
DoSomething();
DoSomethingElse();
return DoMethodAsync();
}
Ich schrieb zunächst die ehemalige, aber nicht mehr den Punkt in Hinzufügen der await sehen können. Wenn ich Letzteres schreiben würde, würde ich das Gleiche tun, und der Aufrufer beider Methoden kann immer noch das Schlüsselwort abwarten, wenn sie sich entscheiden, nein?
Gibt es einen Unterschied in den oben genannten? Welches ist besser"?
Große, das ist, was ich dachte. Vielen Dank! –
Warten. Kann ich nur etwas klären? In Ihrer neu geschriebenen Version meines Codes haben Sie die DoSomething() und DoSomethingElse() in einer Task.Factory.StartNew() ... ist das richtig? Ich dachte, diese Bits würden synchron laufen, im selben Thread wie der Anrufer? Und es wäre DoMethodAsync(). ContinueWith (t => {} _); ? –
@dark_perfect Sorry, war in Eile. Und ja, du hast vollkommen recht. Aktualisierter Code –