簡體   English   中英

ASP.NET異步並等待

[英]ASP.NET Async & Await

我有一個ASP.NET應用程序。 我正在對其進行負載測試,並設法通過使用外部工具運行並發請求來從線程池中阻止所有線程。 由於通過網絡的I / O請求,所有線程都被阻塞,並且使用async和await關鍵字實現該方法。 我在另一個控制器中也有另一個方法,該方法只返回一個字符串,也就是說,第二個方法不執行I / O。

問題是:即使所有線程都在執行異步I / O,是否也應滿足對這種非阻塞方法的所有請求?

調用實現為異步的方法時,仍然可以阻止。

public async Task GetFooAsync()
{
    await DoSomethingElseAsync();
}

public static void MySyncMethod()
{
    GetFooAsync().Wait();
}

通過調用.Wait() ,我阻塞了線程。 使用async / await實現該方法並不重要。 .Result發生相同的情況

異步方法需要“一直保持異步”狀態-意味着整個調用堆棧都必須是異步的,以便不阻塞。 在ASP.NET應用程序中,這意味着您從控制器中的異步方法開始。 如果控制器方法是同步的,則調用異步方法仍然會阻塞。

請參閱此MSDN文章中的 “一路異步”。 您可能還希望在Channel 9上觀看這些用於異步/等待的基本提示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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