>通常稱為public async Task Foo()
>的異步方法對於並發操作和增強的用戶體驗至關重要。 但是,將它們集成到現有的同步代碼庫中需要仔細考慮。 讓我們檢查幾種方法。
Task.WaitAndUnwrapException
)的直接異步方法,
ConfigureAwait(false)
Task.WaitAndUnwrapException
這個整潔的處理異常,而沒有額外的
<code class="language-csharp">var task = MyAsyncMethod(); var result = task.WaitAndUnwrapException();</code>
>
AggregateException
方法2:MyAsyncMethod
AsyncContext.RunTask
>的任務的僵局。
AsyncContext.RunTask
>方法3:
<code class="language-csharp">var result = AsyncContext.RunTask(MyAsyncMethod).Result;</code>
>如果ConfigureAwait(false)
不適合(例如,當異步方法等待UI事件時),請將異步方法從線程池中卸載:
Task.Run
是線程安全,並且不依賴於UI元素或ASP.NET請求上下文。 另外,使用方法1使用>
AsyncContext.RunTask
進一步閱讀
<code class="language-csharp">var task = Task.Run(async () => await MyAsyncMethod()); var result = task.WaitAndUnwrapException();</code>
以上是如何同步稱異步C#方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!