System.StackOverflowException錯誤,一般都是出現了死循環。
最近測試別人的winform代碼,出現了過一個問題,開始獲取數據都是正常的,運行一段事件之后,就會提示System.StackOverflowException錯誤。
后來逐個檢查測試,發現是代碼中事件中的遞歸調用問題。
例如:
1、方法C綁定事件A
2、事件A中的參數是B
3、在事件A中對B進行條件判斷,當B滿足一定條件的情況下,執行方法C。
這種方式,在方法C執行次數較少的時候,沒有問題,但是如果方法C持續執行,一段時間之后,就會引發System.StackOverflowException錯誤。估計是事件中分配的內存被耗光了。
修改方法是:
1、定義全局布爾類型D
2、在A事件中對B進行判斷,根據B的判斷結果置D的狀態
3、在事件A之外,根據D的判斷,對C進行循環調用。