Ich schreibe ein Programm, um zu überprüfen, ob ich das async-Warte-Konzept verstehe.async und warten Thread-Problem
static void Main(string[] args)
{
Run2().Wait();
}
static async Task DoAsyncWork()
{
await Task.Delay(2000);
}
static async Task Run2()
{
var tid = Thread.CurrentThread.ManagedThreadId;
await DoAsyncWork();
Console.WriteLine(tid == Thread.CurrentThread.ManagedThreadId);
}
Ich bin ein bisschen verwirrt, was wird gedruckt werden?
Ich denke, dass wir keine Garantie haben, was
Mein explantion drucken wird: Wenn await DoAsyncWork
nennen, ist die Steuerung zurück zum Haupt. nach DoAsyncWork
vervollständigen Sie die Kontrolle zurück und den Rest des Codes nach warten. Der Rest des Codes kann ausgeführt werden und wir haben keine Garantie dafür, dass dieser Thread ausgeführt wird.
Eigentlich: Ich führe diesen Code eine Menge Zeit und erhalten False
drucken.
Wie oft werden Sie die gleiche Frage stellen? http://StackOverflow.com/Questions/40577858/async-wait-thread-expected – Jim
* Wir haben keine Garantie über Hexe Thread führen Sie diesen Code. * Wenn 'erwarten' wird Fortsetzung planen statt nur weiter (wie es tun wird, wenn würde die bereits abgeschlossene Aufgabe sehen), dann haben wir die Garantie, dass die Fortsetzung auf einem von 'ThreadPool'-Threads ausgeführt wird. Wie vorher 'erwarten' es nicht' ThreadPool'-Thread, dann garantiert es, dass Thread anders wäre. – PetSerAl
Sie sollten wirklich aufhören, die gleiche Frage immer wieder zu stellen. Besser lesen Sie diesen Artikel stattdessen: http://blog.stephencleary.com/2012/02/async-and-await.html – VMAtm