关于启动已停止的线程 一个线程,运行完成之后线程状态处于stopped状态。此时无法调用start()方法启动线程、该用什么方法启动线程呢?如果继续new一个线程的话会导致内存占用不断增加,到最好好像程序就崩溃了。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不行的。。估计LZ对线程这块理解还不够好。。线程进用stoped状态。。会被销毁。。要想再次启动线程。只能得新建一个新的线程 挂起,重新启动Thread t1 = new Thread(new ThreadStart(Function1));t1.Start(); 用BackgroudWorker可重复开始 BackgroundWorker bw; if(!bw.IsBusy) { bw.RunWorkerAsync(); } BackgroudWorker控件和timer控件其实都是不错的选择! 那大家看下这段代码有什么问题不??为什么程序运行一段时间就崩溃了呢??所谓崩溃就是,系统托盘图标不见了。线程函数执行的东西都不执行了。。private void timer1_Tick(object sender, EventArgs e) {//定时启动线程. count++; if (count == 1000) { count = 0; 查看短信发送记录ToolStripMenuItem_Click(null, null); this.WindowState = FormWindowState.Minimized; return; } if (sms_thread == null || sms_thread.ThreadState == ThreadState.Stopped) { try { if (sms_thread != null) sms_thread.Abort(); sms_thread = new Thread(SmsAutoSender.ThreadRun); sms_thread.Start(); } catch (Exception ex) { MessageBox.Show(sms_thread.ThreadState.ToString() + ex.Message); } } else return; } 要想停止进程后重启启动只能这样Thread t1 = new Thread(new ThreadStart(Function1));t1.Start();t1.abort();我刚做的一个项目就是这样的 我也遇到类似的问题,就是当我程序遇到bug时候,我想在catch 里捕获到错误的同时,重新开启程序,关闭原来第一个程序,然后根据两个不同的进程ID,结束掉第一个遇到bug的程序。但是当我第二次重新启动程序的时候就会报错,说什么没有与此进程关联。这是怎么回事呀? 判断是否STOP了,STOP了就重新NEW个嘛 会不断增加内存吗?我的这么不会啊?我的timer每3秒都会重新NEW一个线程,运行一天都没事。 c# 向注册表添加信息 C# 数据传递 IList<>取值问题。 一道面试题的问题 如何将上传的avi、WMV、MP4、asf等格式的视频文件转换为flash 新年好 问一个c#控制IIS的问题 怎么在类文件中引用另一个类文件中的常量? 关于打印listview的内容(无法给分对不起啊,才注册。。着急呀) FTP。获取服务器当前用户的文件列表。 请问, 银行系统一卡通, 第三磁道验证通常是怎么加密的。 c# 打包需要.net framework3.5 问题 控件透明问题
Thread t1 = new Thread(new ThreadStart(Function1));
t1.Start();
可重复开始
BackgroundWorker bw;
if(!bw.IsBusy)
{
bw.RunWorkerAsync();
}
为什么程序运行一段时间就崩溃了呢??
所谓崩溃就是,系统托盘图标不见了。线程函数执行的东西都不执行了。。private void timer1_Tick(object sender, EventArgs e)
{//定时启动线程.
count++;
if (count == 1000)
{
count = 0;
查看短信发送记录ToolStripMenuItem_Click(null, null);
this.WindowState = FormWindowState.Minimized;
return;
}
if (sms_thread == null || sms_thread.ThreadState == ThreadState.Stopped)
{
try
{
if (sms_thread != null)
sms_thread.Abort();
sms_thread = new Thread(SmsAutoSender.ThreadRun);
sms_thread.Start();
}
catch (Exception ex)
{
MessageBox.Show(sms_thread.ThreadState.ToString() + ex.Message);
}
}
else
return;
}
Thread t1 = new Thread(new ThreadStart(Function1));
t1.Start();t1.abort();
我刚做的一个项目就是这样的