关于 C# 线程操作的问题 线程一旦启动运行,在窗口关闭后,会发现应用还是继续运行着,任务管理器依然能够看到。此时根本无法继续在 IDE 中运行我们的程序,这样的问题应该怎样解决? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最好办法就是你自己关闭之前记得停止线程。停止的方法很多,比如设置线程退出条件,或是强行终止,或是最简单的。一句话:Main函数最后写上:Environment.Exit(0); Application.ExitThread();行不?要不用代码找到所有Process,然后Kill(); 你线程的代码有循环体没有退出。在循环体中加个标志if(isclosing==true)判断。在form_closing中设置标志isclosing=false; private void button1_Click(object sender, EventArgs e) { Thread t = new Thread(new ThreadStart(DoSomething)); t.Start(); } private void DoSomething() { while (true) { this.label1.Text = DateTime.Now.ToLocalTime().ToString(); Thread.Sleep(1000); } } 我想在窗口关闭过程中写 Process.GetProcessesByName("应用程序名称")[0].Kill();总觉得不是个好办法。 private void button1_Click(object sender, EventArgs e) { Thread t = new Thread(new ThreadStart(DoSomething)); t.Start(); } private void DoSomething() { while (true) { this.label1.Text = DateTime.Now.ToLocalTime().ToString(); Thread.Sleep(1000); } }你这个不会异常?1.辅助线成直接操作了ui线程的资源,应该会提示跨线程调用的异常2.一般不这么干的,比如加个标记public class form1 : form{ private bool running = false; public void test() { running = true; new Thread((ThreadStart)delegate { while(!this.IsDisposed && running) { this.Invoke((EventHandler)delegate { this.label1.Text = DateTime.Now.ToLocalTime().ToString(); }); Thread.Sleep(1000); } }).Start(); } //这样关闭的时候设置一下running为false或是直接关闭,都不会有线程没执行完的情况。} LS说的是,经验太少没发现.辅助线程是不能操作主线程的资源的,用Invoke和BeginInvoke() 在FormClosing事件中t.Abort()就可以了 发布中用到的文件怎么办? 发邮件发不出去 谁有好点的。关于 C# 数据库编程方面的书?电子的 pdf 之类的最好。中文的最好。多谢了 在使用SqlCommandBuilder时,是在DataAdeper定义时就使用,还是在Update之前使用就可以? DataTable的问题 未能找到存储过程,是什么问题? 怎样读出DataReader的下一条记录? 怎样读取 mac 地址? DataTable怎么实现类似html中ColSpan和RowSpan的几列合并或几行合并显示的结构 sql server医生 求帮忙写个前台输出 如何通过程序停止默认网站?
要不用代码找到所有Process,然后Kill();
{
Thread t = new Thread(new ThreadStart(DoSomething)); t.Start();
} private void DoSomething()
{
while (true)
{
this.label1.Text = DateTime.Now.ToLocalTime().ToString();
Thread.Sleep(1000);
}
}
{
Thread t = new Thread(new ThreadStart(DoSomething)); t.Start();
} private void DoSomething()
{
while (true)
{
this.label1.Text = DateTime.Now.ToLocalTime().ToString();
Thread.Sleep(1000);
}
}你这个不会异常?
1.辅助线成直接操作了ui线程的资源,应该会提示跨线程调用的异常
2.一般不这么干的,比如加个标记public class form1 : form
{
private bool running = false;
public void test()
{
running = true;
new Thread((ThreadStart)delegate
{
while(!this.IsDisposed && running)
{
this.Invoke((EventHandler)delegate
{
this.label1.Text = DateTime.Now.ToLocalTime().ToString();
});
Thread.Sleep(1000);
}
}).Start();
}
//这样关闭的时候设置一下running为false或是直接关闭,都不会有线程没执行完的情况。
}