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