日期:2014-05-19  浏览次数:21071 次

为什么我的程序运行一段时间或长时间运行程序会没有响应,界面一片白,请高手赐教!!!
我写的是一个短信发送程序,程序用到了TCP连接,或取需要发送的短信内容,每隔10秒就要用TCP连接获取一次需要发送的短信内容,用到了Timer控件,程序中所有的异常我都进行了处理,也写了日志,但是程序长时间运行就会没有响应,程序就死掉了,请各位大侠给点意见,要怎样改才不会发生这样的问题?

------解决方案--------------------
用多线程吧,另外开线程作处理!
------解决方案--------------------
你把功能写到线程中去,我以前也遇到这种情况,我是写数据库,程序太忙了,界面上就什么也显示不出来,后来写到线程中去,就好了,不知道和你的是不是一种情况
------解决方案--------------------
多线程是个高级话题,不是三两句就能把你的问题解决的

如果楼主不知道如何用,最好先查阅资料看看最简单的例子是怎么样的,然后再考虑怎么用到楼主的软件中,再出现问题可能会更具体些
------解决方案--------------------
描述不清楚,有很多可能,目前来看错误和多线程应该没关系
1 是winform程序 还是服务
2 程序死掉了是什么意思?是界面死了还是连日志都不写了
3 TCP连接是否会在任何情况下都能关闭
4 内存及cpu变化情况
timer执行本身就应该是在另一个线程中
如果有可能把你认为可能出现问题的地方粘出来
___________________________________
另 长时间要用System.Timers.Timer 这个timer别用别的
------解决方案--------------------
在做网络编程中常会遇到阻塞而引起程序假死.即窗体界面失去响应.
出现假死现像主要是由于TCP的同步连接,在等待连接时发生阻塞.

解决方法:
1:多线程,单独用一个线程来控制连接,响应等相关.
2:用异步方式
------解决方案--------------------
建议
1、VS2005,安全线程
2、异步操作——推荐
------解决方案--------------------
timer本来就是多线程的,不是么?
------解决方案--------------------
timer本来就是多线程的——实际上却是不如手写的多线安全可靠的,资源占用也比较大