我有一個回傳值的異步方法,我想為此任務添加等待。
var return = Task.Run(() => SomeMethod(param1)).Wait();
如何從這條線上方獲得回傳值。
uj5u.com熱心網友回復:
典型的方法是只寫
var result = Task.Run(() => SomeMethod(param1)).Result;
這將阻塞,直到結果可用。所以它相當于
var task = Task.Run(() => SomeMethod(param1));
task.Wait();
return task.Result;
注意.Result一般不推薦使用。它會阻塞呼叫執行緒,所以不僅僅是使用var result = SomeMethod(param1). 還有死鎖的風險。如果這是在 UI 執行緒上運行的,并且 SomeMethod 使用.Invoke或其他等待 UI 執行緒的東西,那么您的程式將死鎖。
一般推薦的方法是使用 async/await:var result = await Task.Run(...)
uj5u.com熱心網友回復:
var result = await Task.Run(() => SomeMethod(param1));
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/450075.html
標籤:C# 网 asp.net-mvc asp.net 核心 异步等待
下一篇:如何使用剃刀編輯資料庫中的檔案?
