Von blockierenden .Result/.Wait()-Aufrufen zu durchgehend asynchronem Code in einer alten C#-Codebasis migrieren
Ein stufenweiser Leitfaden, um sync-over-async aus einer bestehenden .NET-Codebasis zu entfernen: mit Analyzern inventarisieren, ThreadPool-Starvation messen, eine Aufrufkette nach der anderen umstellen und den Zähler unter .NET 11 auf null bringen.