Ich bekomme, dass ich in einer async
markierte Methode warten muss, um es asynchron zu machen, aber ich bekomme nicht, wie man das Loch wirklich beendet, das es macht.Wie schreibe/beende ich eine asynchrone Methode in C#?
static async void Example()
{
int t = await getIntAsync();
WriteLine($"computer: {t}");
}
Da getIntAsync markiert async ich in diesem Verfahren zu erwarten haben oder ich erhalte eine Warnung aus. Aber oh nein, in der Methode, auf die ich in getIntAsync warte, muss ich das als asynchron markieren, und wenn es nicht darauf ankommt, bekomme ich eine Warnung. Und so weiter und so weiter bis zur Unendlichkeit. Wie kann ich es einfach stoppen?
Ich habe ein paar Leute
await Task.Delay(1000);
In meinem Code zu setzen, mir zu sagen habe, aber ich weiß die Antwort nicht so muffig sein kann eine Verzögerung von einer Sekunde in alle Code meiner Produktion setzen.
Ein paar andere gesagt eine Aufgabe, Verfahren es wie
static Task task()
{
//code
}
zu beenden Aber es sei denn, ich kennzeichnen, dass async
es die gleiche Warnung wirft, die mich in diese Verwirrung bekam. Ich weiß,
Technisch funktioniert es, aber wieder scheint das zu viel von einem Code-Geruch zu haben über die gesamte Produktion.
ich es einfach nicht bekommen ...
EDIT: Weil es wurde gefragt. Ich weiß, dass es eine sehr triviale Methode ist, aber es ist auch nur eine Übung, die ich benutze.
static async Task<int> getIntAsync()
{
Console.Write("Enter the number: ");
int n = int.Parse(Console.ReadLine());
return n;
}
Können Sie zeigen, was Sie _actually_ versuchen zu erreichen? Wenn Sie keine wirklich asynchrone Methode darin haben, _why_ möchten Sie die Methode der höheren Ebene überhaupt asynchron machen? –
[check msdn] (https://msdn.microsoft.com/en-us/library/mt674882.aspx) – inan
Wenn Sie nichts zu erwarten haben, markieren Sie die Methode nicht als async. Einfach genug. –