做的是同一件事情,timer本身就是实时去检测并刷新listView数据源的,socket无非是在接受到消息时刷新而已不是实时检测,你为什么要创建线程去刷新,每次接收到消息创建一个线程,用完之后又得销毁,之后收到消息又得重复同样的创建-销毁,浪费资源不说,还那么麻烦,你为什么不把刷新数据源封装成一个公共方法,timer里调用,当socket接收到消息时再调用即可,都可执行又不冲突~
这种有多半是由于线程冲突造成的。多半涉及到你线程中 *** 作的对象的“释放”没处理好。(你可以打开此程序,然后到“任务管理器”中查看此程序的“线程数、IO读取写入、“GDI对象”、“内存占用”等信息,是否正常。记录下数据,然后程序开几分钟后,再看看。)
程序退出的方法:this.Close() 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;Application.Exit() 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;Application.ExitThread()强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题;System.Environment.Exit(0) 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)