Ich verwende eine Bibliothek, die Methoden mit der Endung ...Async
bereitstellt und Task
zurückgibt. Ich werde diese in einer Befehlszeilenanwendung verwenden. Also muss ich sie viel synchron nennen.Warten auf asynchrone Task ohne Wrapping von Ausnahmen in AggregateException
C# natürlich erlaubt nicht diese Methoden in Main
Methode aufrufen, da Sie async
Modifikator auf Main
Methode verwenden können. Angenommen, das ist die Aufgabe:
var task = datastore.Save(data);
ich mehrere Lösungen wie gefunden:
Tasks.WaitAll(task);
task.Wait();
jedoch alle diese einwickeln geworfen Ausnahmen in AggregateException
, Ich will nicht, dass. Ich möchte nur sagen task.Result
und ich erwarte, dass die ursprüngliche Ausnahme ausgelöst wird.
Wenn ich eine Methode Task<TResult>
zurückgeben, task.Result
wirft AggregateException
, obwohl keine Fortsetzung Aufgaben festgelegt sind. Warum ist das Hacken?
Ich habe auch versucht,
task.RunSynchronously();
es gibt Fehler:
RunSynchronously may not be called on a task not bound to a delegate, such as the task returned from an asynchronous method.
also denke ich, das ist nicht für Methoden wie async
markiert.
Haben Sie Ideen zu Mustern, die Bibliotheken verwenden, die für asynchrone Anwendungen in Konsolenanwendungen entwickelt wurden, in denen kein asynchroner Kontext vorhanden ist?