[英]Making my MVC Async controller methods asynchronous so they can process at the same time
我有以下異步代碼:
public class AsynchronousController : AsyncController
{
public ActionResult IndexSynchronous(string city)
{
return View("Index");
}
public async Task<ActionResult> AsyncTest(string call1, string call2)
{
await Task.Delay(10000);
return null;
}
}
目標是我可以在 AsyncTest 正在處理時簡單地打開 IndexSynchronous,但這樣它不起作用。 我通過首先調用 Asynctest 然后調用 IndexSynchronous 來驗證這一點,它仍在等待其他操作。
誰能告訴我我錯過了什么?
Async - Await 與並行編程無關。 這是為了避免在等待 IO 操作時進行無用的 CPU 處理。
當你這樣做時:
string fileContent = await GetFileContent();
您只是告訴當前線程停止執行,直到它收到中斷(IO 操作完成)。 現在任務進來了:當正在執行任務的線程等待IO 操作繼續時,它可以在等待時開始執行另一個任務。
進程的並行度由正在使用的線程池的線程數給出。 每個線程都比執行任務。 當一個線程調用 await 時,會停止當前任務的執行並開始執行另一個任務。
Async - Await是關於通過避免線程在等待 IO 操作時使用 CPU 來提高性能
要回答您的問題,即使在沒有異步控制器的舊 ASP.NET web 應用程序中,您也可以同時處理不同的請求(以及不同的 controller 操作)。 你不需要做任何事情來達到這個目標。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.