假設我們在標準mvc控制器中有以下兩種方法。MVC異步控制器操作
public class SomeController : Controller
{
public async Task<Response> SomeAction1()
=> await _someService.SomeAsyncMethod();
public Task<Response> SomeAction2()
=> _someService.SomeAsyncMethod();
// SomeAsyncMethod might look like this.
// public async Task<Response> SomeAsyncMethod()
// => await someDbAction();
}
簡單的問題:基礎控制器類是否執行任務作爲等待/異步?
或者,這兩個操作是否完全相同?
- 編輯了一下澄清。 -
如何請求由線程池
在Web服務器處理時,.NET Framework維護用於服務的ASP.NET請求的線程池。當請求到達時,將調度池中的線程來處理該請求。如果請求被同步處理,處理請求的線程處於忙碌狀態,並且該線程無法處理其他請求。
我的目標是瞭解返回Task的方法是否需要伴隨單詞async
。如果關鍵字不存在,那麼它會將該方法視爲同步並保持線程,即使SomeAsyncMethod
中有一個await
創建回調?
隨着'異步相當可觀/ await'將你的服務請求,返回到線程池以處理其他請求,並在異步操作完成時恢復您的操作。這意味着你可以在'async'之後做其他事情。這也意味着如果你的'async'操作失敗了,你可以得到'Exception's。在第二個返回「任務」的地方,這將是一場火災和遺忘的行動。這意味着你基本上不關心「異步」操作的結果。 – JohanP