c# 多線程 由於代碼已經過優化或者本機框架位於調用堆棧之上,無法計算表達式的值 ...
在網上找到一段解釋:
堆棧是用於存放變數和方法,“位於調用堆棧之上”,我們可以理解為堆棧裡面已經沒有變數和方法可以調用了,其實也就是程式已經結束了,堆棧都空了(指針在原本堆棧的外部--之上)。
放在我的實際場景裡面:我開了一個非同步去處理一個事件,而主線程並沒有等待這個非同步就直接結束了,實際上就是主線程關閉了,非同步卻還在運行,結果就是記憶體都釋放了,非同步當然找不到變數了,就報錯了。
觸發場景:多線程跑大數據量或者很複雜的計算邏輯的時候,執行時間超過20分鐘,線程被IIS自動回收了
解決方案: IIS->應用程式池->找到應用的應用程式池,右鍵,高級設置->將閑置超時(分鐘)改為1740(預設為20分鐘)