Wann ist es vorteilhaft, in einer C# -Konsole -Anwendung Async/Warte zu verwenden? [geschlossen]C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Wann ist es vorteilhaft, in einer C# -Konsole -Anwendung Async/Warte zu verwenden? [geschlossen]

Post by Anonymous »

Ich versuche zu verstehen, dass Async/Awit in einer C# -Konsole -Anwendung tatsächlich Vorteile bietet. In ASP.NET verbessert es die Skalierbarkeit, da der Thread zum Thread -Pool zurückkehren kann, während er auf IO wartet. In einer Konsolen -App gibt es jedoch keinen UI -Thread, der aufgrund gleichzeitiger HTTP -Anforderungen wie in ASP.NET reagiert und keinen Thread -Pool -Druck hält. Ich spreche von einer einfachen Konsolen -App, die nicht mehrere Threads startet.

Code: Select all

// Async version
// Blocks one thread for the entire
// lifetime of the application and
// continuations are run by other
// threadpool threads.
public static async Task Main()
{
var entity = await _repository.LoadFromDbAsync(); // Non-blocking database operation

// do something with entity

await _repository.UpdateAsync(entity); // Non-blocking database operation
}

// Sync version
// Blocks one thread two times
public static void Main()
{
var entity = _repository.LoadFromDb(); // Blocking database operation

// do something with entity

_repository.Update(entity); // Blocking database operation
}
Der Compiler verwandelt die async main in eine synchrone Methode, die getAWaiter (). GetResult () hinter den Kulissen aufruft. Daher ist es effektiv Synchronisation über Async, was bedeutet, dass ein Thread die ganze Zeit blockiert wird, bis die Aufgabe abgeschlossen ist, während die Kontinuationen auf verschiedenen Threads ausgeführt werden. Lebensdauer der Anwendung.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post