问题描述
用socket写了一个聊天程序(可以局域网以及外网使用),采用线程,估计是线程的问题,再弹出的错误窗口中,点继续,窗口关闭,马上又再弹出,再点继续,有时会弹出好几次。许多人遇到类似问题,往往是因为foreach循环中出现,我并没有用到该循环。因为是在win7系统中写的代码,并不会有错误。生成exe后,在公司xp系统中运行,才会有如题的错误。因此我也不知道该如何调试。
解决方案
解决方案二:
VM中装XP调试
解决方案三:
你没有用for或foreach,用while或dowhile不也一样是循环吗而且如果你使用了异步侦听,而客户端使用的是死循环,你这里一样会不断的触发事件执行还有如果你使用了timer之类的定时执行的控件,一样会不断的执行关键点,是你应该先查明到底报什么错误,修改掉这个错误,而不是总在纠结错误窗口弹出几次的问题
解决方案四:
引用2楼Z65443344的回复:
你没有用for或foreach,用while或dowhile不也一样是循环吗而且如果你使用了异步侦听,而客户端使用的是死循环,你这里一样会不断的触发事件执行还有如果你使用了timer之类的定时执行的控件,一样会不断的执行关键点,是你应该先查明到底报什么错误,修改掉这个错误,而不是总在纠结错误窗口弹出几次的问题
1、我在可以调试的电脑(win7)不会出错,将生成的exe放到xp电脑上出错,因此我找不到问题在哪里2、我尽量将所有出错时的现象都描述出来,希望能给大家提供更多线索。3、今天发现不是win7和xp的问题,而是只要装了VS的电脑,都不会出错。于是我将不同电脑进行对比,又没发现可疑之处,奇怪哦
解决方案五:
要对每个线程进行资源释放才能关闭软件。win7带有.NET3.0以上组件,会自动释放内存,XP没有,所有没有释放到内存。
解决方案六:
引用4楼notbb的回复:
要对每个线程进行资源释放才能关闭软件。win7带有.NET3.0以上组件,会自动释放内存,XP没有,所有没有释放到内存。
你好,我在xp装了framework4.0,还需要装哪个,我现在几乎无法从代码上解决了,我想在安装时,将该组件打包进去。
解决方案七:
或者你可以试试在formclosing事件里加上类似下面的代码:关闭sockets连接,直接释放线程的内存。IfmySockets.ConnectedThenmySockets.Close()EndIf聊天服务器.Dispose()