我正在使用一个库,它提供以...Async
和 return结尾的方法Task
。我将在命令行应用程序中使用这些。所以我需要经常同步调用它们。
C# 当然不允许在方法中调用这些方法,Main
因为您不能async
在方法上使用修饰符Main
。假设这是任务:
var task = datastore.Save(data);
我找到了几种解决方案,例如:
Tasks.WaitAll(task);
task.Wait();
但是所有这些将抛出的异常都包含在其中AggregateException
,我不希望这样。我只想说task.Result
,我希望抛出原始异常。
当我使用方法时,即使没有设置继续任务Task<TResult>
,也会task.Result
抛出。AggregateException
为什么会这样?
我也试过,
task.RunSynchronously();
它给出了错误:
不能在未绑定到委托的任务上调用 RunSynchronously,例如从异步方法返回的任务。
所以我想这不适用于标记为async
.
关于在没有异步上下文的控制台应用程序中使用为异步应用程序设计的库的模式的任何想法?