C#中如何安全的终止Thread线程

如题所述

简单的方法是,Thread.CurrentThread.Abort()用于终止当前线程。

当然了,你需求中不但要终止当前线程,还要执行别的业务,弹出form。那么就需要一个新的委托,在线程过程中调用这个委托来终止现成,从而达到在终止线程后执行其他业务。

大概代码,我就写个大概的:

public delegate void StopThreadDelegate(Thread t);
static void StopThread(Thread t)
{
//关闭线程
t.Abort();
//启动新窗体
}
public static void Main()
{
new Thread(delegate(object data)
{
//这里是你的执行逻辑
//当要执行退出线程时
dynamic d = data;
//var d = (StopThreadDelegate)data; //非4.0
d(Thread.CurrentThread);
}).Start(new StopThreadDelegate(StopThread));

}
温馨提示:内容为网友见解,仅供参考
无其他回答

c#线程停止
c#线程停止方法:1.我们需要在C#代码中添加Thread类,就可以开始设置。2.然后我们就能在这里就能设置,设置ThreadStart类进行实例化。3.此时我们就可以在这里启动并且和状态在执行,这是前提。4.因此我们就可以在这里对Thread对象,进行中止操作。5.为了程序的友好性,我们可以在这里输出一条提示。6.此时我们运...

c# .net 怎么终止或暂停 处于 running 状态的线程?
终止线程可以用Thread.Abort()方法,但是最好写个标志位循环去关闭,然后判断状态为关闭了在跳出循环,直接一个Thread.Abort()不一定都绝对关闭或终止线程,这一点微软都不敢保证!

C# 停止线程的问题
你的代码逻辑我是这样理解的,遍历N个线程,如果线程状态不是stopped,就终止该线程 那你可以这样:private void Stop_Click(object sender, EventArgs e){ foreach (Thread threada in thread){ \/\/如果线程状态不为stopped,执行if里的业务逻辑代码 if (threada.ThreadState != ThreadState.Stopped){...

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

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

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

...用udpclient接收消息,请问怎么安全关闭这个线程以及udpclient_百度...
udpclient.Close();\/\/关闭协议 udpclient.Dispose();\/\/释放协议 udpclient = null;\/\/为协议至空值 t.DisableComObjectEagerCleanup();\/\/直接释放掉当前线程

c#如何结束处于监听状态的线程
1、线程自然return返回。如果线程能够返回,就可以确保下列事项的实现:(1)在线程函数中创建的所有C++对象均将通过它们的析构函数正确地释放。(2)操作系统将正确地释放线程堆栈使用的内存。(3)系统将线程的退出代码(在线程的内核对象中维护)设置为线程函数的返回值。(4)系统将递减线程内核对象的...

C#中如何彻底摧毁线程
闪退是因为你创建的子线程出现错误了。编译器不会给你的子线程报错,而是直接退出。要么别加线程,要加就要解决里面的错误,方法是:在线程里设置try catch。就不会闪退了。你还是要解决这个问题才对!设置断点跟进。

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

相似回答