msdn文件裡提到的不會建立新執行緒是指async函式本身不會直接在新執行緒中執行。
在 mvc 模式下:
非同步action執行到await之前都是再loop執行緒,loop執行緒池的執行緒數是有限的,在iis執行緒池的高階設定(queue length)裡可以設定,一旦執行到await之後,就會開啟另乙個執行緒去執行await的任務,同時,loop執行緒回池去接收其他請求,當await執行完了又會從loop執行緒池拿乙個執行緒處理接下來的任務。這樣做的好處是不回阻塞loop執行緒,提高併發(並不是提高單個action的執行效率)。await的任務也最好是高io,低計算的任務(比如檔案讀寫,網路請求,資料庫讀寫)。這樣比較划算
public actionresult getlist()
public async taskgetlistasync()
#region getcountry方法getlist && getlistasync
public string getcountry()
public async taskgetcountryasync()
#endregion
#region getstate方法用於getlist && getlistasync
public string getstate()
public async taskgetstateasync()
#endregion
#region getcity方法getlist && getlistasync
public string getcity()
public async taskgetcityasync()
#endregion
**:參考:
此寫法 會導致 程式 假死,無限等待
參考:
public actionresult index()
public async task***() );
}
正確理解 clear both
要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳細分析...
正確理解 clear both
原文 要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳...
正確理解 clear both
要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳細分析...