怎么编写c#销毁线程

如题所述

  c#线程中的函数运行完了,线程就自动回收了;
  System.Environment.Exit(0);也可以退出程序所有的后台线程,并关闭程序;
  如果严格的话,最好采用某个标识来让线程退出,比如thread在运行的过程中,需要判断一个bool flag,如果为true,则线程正常运行,当想终止线程时,将flag设置为false,线程在后台检测到后,直接将线程主方法return,则线程结束;
  也可以在线程内部调用线程池关闭,如下:
  ThreadPool.XXX
  {
  Thread.Abort();
  }
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-17
线程中的函数运行完了,线程就自动回收了。
第2个回答  2013-04-17
写一个异常处理,调用Abort()方法,引发ThreadAbortException异常,
main(){thread.start()//开启线程…………<br>thread.abort();//引发异常……}
f()
{try{该线程};catch(等待异常)
}本回答被网友采纳
第3个回答  2013-04-17
需要调用线程对象的终止方法才行,
第4个回答  2013-04-17
找你老公教你←_←

C# 怎么删除线程
1.thread.Abort();2.如下实例,用变量来控制进程的退出 public void MyThread(){ \/\/MyThreadStat:线程状态,ThreadStatus.Running是我自己定义的 \/\/当启动线程时,给MyThreadStat付初值 \/\/如果要退出线程,只要设置MyThreadStat的值级可以了。\/\/这样比Thread.Abort()方法更好用。while (MyThreadStat ...

C#如何停止后台线程
Thread t = new Thread(new ThreadStart(run)); \/\/运行run方法的线程 t.Abort(); \/\/摧毁它

C#中关闭程序时如何自动结束正在运行的线程?
\/\/窗体关闭事件中添加如下代码 if(this.thread != null || this.thread.IsAlive){ this.thread.Abort();this.thread = null;} \/\/就OK了

C#中如何彻底摧毁线程
在线程里设置try catch。就不会闪退了。你还是要解决这个问题才对!设置断点跟进。

C#如何释放线程
1、首先我们在Visual Studio中创建一个winform程序。2、然后在winform的主界面中我们拖入一个按钮,如下图所示,接下来会点击这个按钮后创建线程。3、接下来我们定义创建线程需要执行的方法,如下图所示,这里只是简单的做了个循环。4、紧接着就需要定义按钮的点击事件,在点击事件中我们通过ThreadStart来...

如何有效地kill在C#中的线程
任何一个线程只要调用了exit都会导致进程结束,各种子线程当然也能很好的结束了,可是这种退出会有一个资源释放的问题.我们知道当一个进程终止时,内核对该进程所有尚未关闭的文件描述符调用close关闭,所以即使用户程序不调用close,在终止时内核也会自动关闭它打开的所有文件。没错,标准C++ IO流也会很好...

c#线程中 终止线程怎么实现的?
简单的方法是,Thread.CurrentThread.Abort()用于终止当前线程。当然了,你需求中不但要终止当前线程,还要执行别的业务,弹出form。那么就需要一个新的委托,在线程过程中调用这个委托来终止现成,从而达到在终止线程后执行其他业务。大概代码,我就写个大概的:public delegate void StopThreadDelegate(Thread ...

C# 停止线程的问题
那你可以这样:private void Stop_Click(object sender, EventArgs e){ foreach (Thread threada in thread){ \/\/如果线程状态不为stopped,执行if里的业务逻辑代码 if (threada.ThreadState != ThreadState.Stopped){ \/\/业务逻辑代码 \/\/ add logic code \/\/执行完终止该线程 threada.Abort();} }...

在C#中如何关闭线程
线程没有实例化这个概念,只有启动,停止,暂停等方法, 每个线程都会有一个名字,调用每个线程的 Abort() 方法就可以停止该线程了。补充:你的变量名是在哪里声明的? 如果要在另一个按钮事件中也能访问,必须声明为类的变量。

c#启动和结束线程的问题
从ThreadPool中直接取出一个新线程使用就可以了ThreadPool.QueueUserWorkItem() 函数来启动一个新的线程。或直接新建一个Thread然后启动它,但是这样如何去记录这个线程是有讲究的,也许你需要建立一个全局静态的字典来记录SessionID和对应的线程,然后在Session_End事件里面根据SessionID查找对应的线程。提示:1...

相似回答