1. 程式人生 > >c# 多線程 由於代碼已經過優化或者本機框架位於調用堆棧之上,無法計算表達式的值

c# 多線程 由於代碼已經過優化或者本機框架位於調用堆棧之上,無法計算表達式的值

應用程序池 變量 自動 指針 應用程序 超過 外部 由於 報錯

在網上找到一段解釋:

堆棧是用於存放變量和方法,“位於調用堆棧之上”,我們可以理解為堆棧裏面已經沒有變量和方法可以調用了,其實也就是程序已經結束了,堆棧都空了(指針在原本堆棧的外部--之上)。
放在我的實際場景裏面:我開了一個異步去處理一個事件,而主線程並沒有等待這個異步就直接結束了,實際上就是主線程關閉了,異步卻還在運行,結果就是內存都釋放了,異步當然找不到變量了,就報錯了。

觸發場景:多線程跑大數據量或者很復雜的計算邏輯的時候,執行時間超過20分鐘,線程被IIS自動回收了

解決方案: IIS->應用程序池->找到應用的應用程序池,右鍵,高級設置->將閑置超時(分鐘)改為1740(默認為20分鐘)

技術分享圖片

c# 多線程 由於代碼已經過優化或者本機框架位於調用堆棧之上,無法計算表達式的值