Ich denke, ich könnte Methode ausführen, die asynchrone Task-Methode asynchron verwendet, nachdem ich es anrufe, aber es blockiert, tatsächlich läuft es synchron, siehe meinen Code wie unten.Wie Sie eine Methode ausführen, die das asynchrone Task-Schlüsselwort asynchron verwendet?
static void Main(string[] args)
{
asyncTest();// use asyncTest.Wait() help nothing.
Console.ReadKey();
}
static async Task asyncTest()
{
Console.WriteLine("before init task second " + DateTime.Now.Second);
var t1 = getInt1S();// I supposed it to run background,but it blocked
var t3 = getInt3S();
//var await1 = await t1;//this line just no use, run quickly
//var await3 = await t3;//this line just no use, run quickly
Console.WriteLine("after init task second " + DateTime.Now.Second);
}
static async Task<int> getInt1S()
{
Console.WriteLine("getInt1S" + DateTime.Now.Second);
Task.Delay(1000).Wait();
return 1;
}
static async Task<int> getInt3S()
{
Console.WriteLine("getInt3S" + DateTime.Now.Second);
Thread.Sleep(3000);
return 3;
}
Ausgabe wie:
before init task second 21
getInt1S 21
getInt3S 22
after init task second 25
warum 'getInt1S()' und 'erwarten getInt3S()' alle synchron laufen? Gibt es eine Möglichkeit, Code wie:
var a = methodSync();//method define like: async Task<T> methodSync()
Console.Write("");//do something during processing the methodSync
T b = await a;
Ich werde nicht herausfinden, wie verwenden ‚async methodSync()‘ in ConsoleApp.Just, wie mein ‚t1‘ zu machen und ‚t2‘ laufen asynchron 'asyncTest()'.
Ich arbeite an async/await, so möchte ich etwas finden, unterscheiden sich von 'var a = new Aufgabe (() => {return 1;})'
den Weg der Anruf asyncTest Do() Angelegenheit? oder was ich verpasst habe?
Wer könnte mir helfen? oder auf meinen Fehler hinweisen.
Danke.
Der Compiler wird Ihnen Warnungen geben, die Ihnen sagen, dass Ihre 'async' Methoden synchron laufen, weil Sie' awaward' nicht verwenden. Ich habe ein ['async'-Tutorial] (http://blog.stephencleary.com/2012/02/async-and-await.html), das Sie hilfreich finden können. –
Mögliches Duplikat von [Der Modifizierer 'async' für die 'Main'-Methode einer Konsolen-App kann nicht angegeben werden] (http://stackoverflow.com/questions/9208921/cant-specify-the-async-modifier-on-- die-main-methode-einer-konsole-app) – Eris