Asynchron/warten auf andere Thread-IDC#

Ein Treffpunkt für C#-Programmierer
Guest
 Asynchron/warten auf andere Thread-ID

Post by Guest »

Ich habe kürzlich über async/await gelesen und bin verwirrt darüber, dass in vielen Artikeln/Beiträgen, die ich gelesen habe, angegeben wird, dass bei Verwendung von async/await kein neuer Thread erstellt wird (Beispiel).
Ich habe eine einfache Konsolen-App erstellt, um es zu testen:

Code: Select all

class Program
{
static  void Main(string[] args)
{
Console.WriteLine("Main: " + Thread.CurrentThread.ManagedThreadId);
MainAsync(args).Wait();
Console.WriteLine("Main End: " + Thread.CurrentThread.ManagedThreadId);

Console.ReadKey();
}

static async Task MainAsync(string[] args)
{
Console.WriteLine("Main Async: " + Thread.CurrentThread.ManagedThreadId);

await thisIsAsync();
}

private static async Task thisIsAsync()
{
Console.WriteLine("thisIsAsyncStart: " + Thread.CurrentThread.ManagedThreadId);
await Task.Delay(1);
Console.WriteLine("thisIsAsyncEnd: " + Thread.CurrentThread.ManagedThreadId);

}
}
Die Ausgabe des folgenden Codes ist:

Code: Select all

Main: 8
Main Async: 8
thisIsAsyncStart: 8
thisIsAsyncEnd: 9
Main End: 8
Verstehe ich den Punkt oder hat „thisIsAsyncEnd“ eine andere Thread-ID als andere Aktionen?
BEARBEITEN:
Ich habe den Code wie in der Antwort unten vorgeschlagen aktualisiert, um auf Task.Delay(1) zu warten, aber ich sehe immer noch die gleichen Ergebnisse.
Zitat aus der Antwort unten:

Vielmehr ermöglicht es die Aufteilung der Methode in mehrere Teile, von denen einige möglicherweise asynchron ausgeführt werden.

Ich möchte wissen, wo das ist Der asynchrone Teil wird ausgeführt, wenn keine anderen Threads erstellt wurden?
Wenn er im selben Thread ausgeführt wird, sollte er ihn dann nicht aufgrund einer langen E/A-Anforderung blockieren oder ist der Compiler intelligent? genug, um diese Aktion in einen anderen Thread zu verschieben, wenn es zu lange dauert, und a Neuer Thread wird doch verwendet?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post