winform程序运行时悄无声息的消失了,没有任何提示。如果说是代码出错,应该会跳出一个出错提示!但是什么提示都没有,但是程序会突然消失,这是为什么呢??网上看了一些资料,有的人说是因为线程太多导致的~?如果是这个原因,要怎么解决呢,不知道声明一个线程以后,线程中的方法执行完以后,线程过一段时间是否会自动释放~?
我线程申请方式如下:
[code=C#]
private System.Threading.Thread TranThread;//全局变量,申明一个线程
//调用方式
for(int i=0;i<dtuinfo.Length; i++)//dtuinfo为对象数组,每个对象都声明一个线程
{
string TranKeyAndValue = dtuinfo[i].DtuID.ToString() + ":" + dtuinfo[i].ServerIP + ":" + dtuinfo[i].ServerPort.ToString();//传递的参数
TranThread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(TranDataThread));
TranThread.IsBackground = true;
TranThread.Start((object)TranKeyAndValue);
}
这个方法到底会声明几个线程,还是新声明一个线程以后,会把之前的线程给释放了?还有这个方法每隔大概10分钟就会在执行一次~!
还有,如果程序不声不响的消失了,还有没可能是其他问题?
现在最多只能给100分,分不够再追加~!!!!!!
我线程申请方式如下:
[code=C#]
private System.Threading.Thread TranThread;//全局变量,申明一个线程
//调用方式
for(int i=0;i<dtuinfo.Length; i++)//dtuinfo为对象数组,每个对象都声明一个线程
{
string TranKeyAndValue = dtuinfo[i].DtuID.ToString() + ":" + dtuinfo[i].ServerIP + ":" + dtuinfo[i].ServerPort.ToString();//传递的参数
TranThread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(TranDataThread));
TranThread.IsBackground = true;
TranThread.Start((object)TranKeyAndValue);
}
这个方法到底会声明几个线程,还是新声明一个线程以后,会把之前的线程给释放了?还有这个方法每隔大概10分钟就会在执行一次~!
还有,如果程序不声不响的消失了,还有没可能是其他问题?
现在最多只能给100分,分不够再追加~!!!!!!
方法里是否会产生异常,程序运行多久后无声无息的消失?调试时是否出现问题?
有可能是你代码的结构不合理造成的。如果这个方法每隔10分钟执行一次,那么会不会造成上次未执行完,现在又开始执行的冲突了?毕竟不知道dtuinfo为对象数组到底有多大。
还是用Try快跟踪一下线程的行为为好。
程序假死的原因很多....异常未处理也是一个 很多的原因 内存泄露 内存释放不及时 等等...
可以使用 AppDomain.CurrentDomain.UnhandledException 事件 msg错误看看咯