【完美解决】C# 报错 “System.StackOverflowException”类型的未经处理的异常出现在 mscorlib.dll 中。

前几天客户定制了一个小工具,需要循环不停的执行某一个函数,当时使用的是多线程递归调用,而且客户要求更快的响应速度,不需要 Thread.Sleep,那递归的就更快了。
结果导致程序过1,2小时就会自动闪退。

刚开始把可能出现异常的部分一个个去加固处理,防止出现异常闪退,
但是到最后还是会出现。

实在没办法,让客户把整个数据复制到本地再去调试,挂机几小时后,出现 ““System.StackOverflowException”类型的未经处理的异常出现在 mscorlib.dll 中。

网上找了一下解决方案,才明白是函数递归了,没有释放资源,导致程序的崩溃,所以程序作了一些改动。

这里是每个线程,递归调用了本函数10次,就自动重新去创建一个新的线程。
在这里插入图片描述
在这里插入图片描述
将不再活动的线程,从List数组中删除掉,因为点停止按钮,会手工删除这些线程。

挂机试了一下,应该不会再出问题了,完美解决!!!
占用的系统内存也少了很多,挂机了很久也才40M左右。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值