我自己写一个winform程序,有关网络的。里边用到了多线程,其中一个线程用来与服务器相互通信,还有另外一个线程是用来处理从服务器下载下来的数据,还有其他的一些线程,线程都设为后台线程了。由于需要,关闭软件是需要提示关闭 与注销,如果注销的话就返回到登录界面。
我的注销是用的Application.Restar(),但是有时候关闭程序时会弹出短话框如下图所示:
是不是我的线程有没有关闭的!园子里有各位大侠帮小弟看看大概什么原因:
可以加qq:381139762
小弟感激不尽。。
小弟只有20分不好意思!
产生死锁了,导致这样的情况
可能会有死锁,我的里面好几个线程使用while(true) 做的,但是我应该怎么查找是是那一块出现问题呢!
@bos_kg: 查看windows日志,里面应该有详细信息
@az235: 不好意思,查看windows日志具体的要怎么查看呢!谢谢了!
@bos_kg: 开始--》管理工具--》事件查看器--》windows日志--》应用程序
@az235:是看到了有我自己的程序的错误日志,但是日志还是看不懂啊,
错误应用程序名称: Client.exe,版本: 1.0.0.0,时间戳: 0x4fac7013
错误模块名称: mswstr10.dll,版本: 4.0.9756.0,时间戳: 0x49246e49
异常代码: 0xc0000005
错误偏移量: 0x00001156
错误进程 ID: 0x15d4
错误应用程序启动时间: 0x01cd2f1853d156d8
错误应用程序路径: D:\Client\Client\bin\Debug\Client.exe
错误模块路径: C:\windows\system32\mswstr10.dll
这些东西我要怎么看呢!
@bos_kg: 找到那个dll,查找其中的错误,或者在日志里面看看详细信息
@az235: 不好意思,还是想在问一下你!我在日志里边只能看到这些信息,详细信息也是这些信息,找到dll后好像是个系统的dll也没办法查看,请问还有其他办法查找错误吗!
@bos_kg: 那你调用这个dll的参数可能传错了,检查下
@az235: 谢了,我的程序中没有用到那个dll文件,应该是我线程的问题。正在解决中,还是感谢你的回答!
如果是網絡 操作,會由問題的
http://stackoverflow.com/questions/95098/why-is-application-restart-not-reliable
这个例子我之前看了一点但是:用互斥我也试过,不起什么作用,Properties.Settings.Default.IsRestarting=false;
怎么就没有发现Setting.Default.IsRestarting 这个属性啊。。
@bos_kg: 應該是線程沒有關閉。要不你不要用這個方法Application.Restar()。
直接關閉窗口,然後再顯示登錄窗口。