c# 线程的一点问题

来源:百度知道 编辑:UC知道 时间:2024/09/25 20:33:28
我想问的是声明一个全局的线程Thread mythread;
然后在一个button的事件中是这样的:
mythread=new thread(function);
mythred.start();
//
就这样,在button事件里也没有终止线程的句子...
如果一直点botton,会不会生成很多线程?

这么写的话 每次点BUTTON就会开一个新线程
如果你写得function这个函数不是一直循环下去的 只要函数执行完毕 线程就会终止
如果你想停止的话 就得保留现成的引用。。
说简单点 就是每次new一个thread的时候都把它保存起来 比如保存在List<Thread> threads中
终止某一个线程 就找到你想终止的线程 abort掉
终止所有线程 就foreach每一个线程 abort掉

不过如果你的function函数是一个比较耗时的函数 比如下载文件
建议在函数外面定义一个布尔值来表示是否终止线程 每次循环都判断是否需要终止
这样只要把这个布尔变量设置一下就可以终止线程了 这比直接abort高明得多
因为直接abort不一定再线程运行到什么位置的时候就强行停止 可能造成预料外的错误

怎么可能生成很多线程?又不是死循环,就start一次线程,创建一个线程,等function方法执行完,线程就结束,

不会