wie, um wieder eine Aufgabe<Liste<string>> per c#?
Bin ich aktuell meine ersten Schritte mit VS2012 und .NET 4.5 mit async und await.
für diese ich bin der Implementierung eine Methode mit der folgenden Signatur:
public Task<List<string>> foo() {...}
Ich weiß, wie die Rückgabe einer Liste, aber ich weiß nicht, wie man diese Liste in einer Aufgabe<>.
Wie es zu tun?
EDIT: hier ist das komplette Beispiel, ich muss Ding, was ich ändern muss, um die return-Anweisung möglich
public async Task<List<string>> foo()
{
List<string> myList = new List<string>;
{...}
return mylist;
}
InformationsquelleAutor gurehbgui | 2012-12-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn deine Methode ist tatsächlich asynchron, können Sie fügen Sie einfach die
async
Schlüsselwort, und der compiler generiert eineTask
für Sie.Kann man auch schreiben von asynchronem code von hand, mit
ContinueWith()
auf eine bestehende Aufgabe oder die Verwendung der statischen Methoden auf dieTask
- Klasse zum erstellen von neuen Aufgaben.Wenn Ihre Methode nicht asynchron, es gibt keinen Punkt, sollten Sie Sie wieder ein
List<string>
direkt ein.Wenn, aus irgendeinem Grund, Sie müssen, um wieder eine pre-abgeschlossen
Task<T>
einer synchronen Methode (wenn Sie die Implementierung einer Schnittstelle), können Sie rufen SieTask.FromResult
.await
, in dem Fall, was auch immer Sie verwenden, ist bereits die Generierung einer Aufgabe, oder eine andere Darstellung eines asynchronen Ergebnis, das Sie wiederum in eine Aufgabe."einige andere Repräsentation einer asynchronen Ergebnis, dass Sie verwandeln sich in eine Aufgabe" mit
TaskCompletionSource<List<string>>
.die Frage ist: wie Schreibe ich ein "return ... "myList", die es passend zu der Signatur?
Ändern Sie die Signatur. Wenn Sie dies nicht tun können, siehe mein Dritter Absatz.
Also, wie Schreibe ich eine Methode, wenn ich Sie benutzen will
await
es nennen, aber ich bin nichtawait
drin? Verwendenawait
wenn ich es nennen, es muss wieder einTask
oderTask<T>
. Aber ich sollte nicht erklären, wieasync
wenn ich mich nicht mitawait
drin.InformationsquelleAutor SLaks
Sowas?
Dies ist nicht die beste Praxis, jedoch. SLaks' Antwort deckt das async/await-mehr Möglichkeiten im detail.
Ich werde umschreiben, mein Kommentar. Die Methode
ReturnList
ist nicht abgeschlossen, Sie haben Ihren eigenen code schreiben, und eine RückkehrList<string>
. Ich bearbeitet die Methode, um es zu kompilieren.InformationsquelleAutor Mir
Wenn Sie möchten, eine asynchrone Methode verwenden Sie so etwas wie:
sehen http://www.asp.net/mvc/tutorials/mvc-4/using-asynchronous-methods-in-aspnet-mvc-4 für ein tolles Beispiel.
InformationsquelleAutor viperguynaz