>通常称为public async Task Foo()
>的异步方法对于并发操作和增强的用户体验至关重要。 但是,将它们集成到现有的同步代码库中需要仔细考虑。 让我们检查几种方法。
Task.WaitAndUnwrapException
)的直接异步方法,
ConfigureAwait(false)
Task.WaitAndUnwrapException
这个整洁的处理异常,而没有额外的
var task = MyAsyncMethod(); var result = task.WaitAndUnwrapException();
>
AggregateException
方法2:MyAsyncMethod
AsyncContext.RunTask
>的任务的僵局。
AsyncContext.RunTask
>方法3:
var result = AsyncContext.RunTask(MyAsyncMethod).Result;
>如果ConfigureAwait(false)
不适合(例如,当异步方法等待UI事件时),请将异步方法从线程池中卸载:
Task.Run
是线程安全,并且不依赖于UI元素或ASP.NET请求上下文。 另外,使用方法1使用>
AsyncContext.RunTask
进一步阅读
var task = Task.Run(async () => await MyAsyncMethod()); var result = task.WaitAndUnwrapException();
以上是如何同步称异步C#方法?的详细内容。更多信息请关注PHP中文网其他相关文章!