簡體   English   中英

使我的 MVC Async controller 方法異步,以便它們可以同時處理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM