C# 如何杀掉状态为sleep的线程?

如题所述

1.获得当前所有的线程
2.检查检查线程是否为sleep状态
3.然后使用thread.Abort()去kill掉对应的线程

另外,你也可以通过用google搜:
How to: Create and Terminate Threads (C# Programming Guide)
去找到微软官网代码。
拷贝给你参考:

using System;
using System.Threading;

public class Worker
{
// This method will be called when the thread is started.
public void DoWork()
{
while (!_shouldStop)
{
Console.WriteLine("worker thread: working...");
}
Console.WriteLine("worker thread: terminating gracefully.");
}
public void RequestStop()
{
_shouldStop = true;
}
// Volatile is used as hint to the compiler that this data
// member will be accessed by multiple threads.
private volatile bool _shouldStop;
}

public class WorkerThreadExample
{
static void Main()
{
// Create the thread object. This does not start the thread.
Worker workerObject = new Worker();
Thread workerThread = new Thread(workerObject.DoWork);

// Start the worker thread.
workerThread.Start();
Console.WriteLine("main thread: Starting worker thread...");

// Loop until worker thread activates.
while (!workerThread.IsAlive);

// Put the main thread to sleep for 1 millisecond to
// allow the worker thread to do some work:
Thread.Sleep(1);

// Request that the worker thread stop itself:
workerObject.RequestStop();

// Use the Join method to block the current thread
// until the object's thread terminates.
workerThread.Join();
Console.WriteLine("main thread: Worker thread has terminated.");
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-09
判断下你的进程时候还要调用,步调用立即关闭
关闭方法如下:
Process[] ps = Process.GetProcesses();
foreach (Process item in ps)
{
if (item.ProcessName=="EXCEL")
{
item.Kill();
}
}
第2个回答  2012-12-04
你想怎么滴?追问

我有一个定时小功能模块嵌入到主程序里,在一次执行结束后,让线程sleep。但是我在关闭当前界面不关闭主程序的情况下线程是无法杀死的

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

C#中如何
在C#编程中,利用Sleep函数是一个关键手段来控制线程执行。这个方法让当前线程暂时停止执行指定的毫秒数,期间不会失去对任何监视器的控制权,而是告诉操作系统在给定时间内暂停参与CPU竞争。比如,调用Thread.Sleep(1000)会让线程休眠1秒,时间过后线程会自动恢复执行。时间片调度在操作系统中起着核心作用。在...

C# 怎样快速中断一个阻塞的线程?
那你就用异步关闭去关掉已经阻塞的线程把..

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

c# Thread.Sleep(1000); 问题
这句是让主线程睡眠1秒,当然没反映了,既睡眠又可以使用,这句话很矛盾,你要想做一件事的时候主线程还可以干别的事,那你就得新建一个子线程了 .需要知道的是,你现在在睡眠主线程。你控件不能使用说明你睡眠的是ui线程,你可以用后台线程来处理数据,ui在前台干别的事 ...

C#如何阻塞线程
看不明白你上面想表达什么,要么你就把整体的业务功能需求说一下,看怎么实现合理 死循环会拖累cpu是对的,但如果(后台线程)循环里加上sleep,就没什么问题了 线程间同步机制有很多方式,比如manualresetevent等,建议你先搜下

C#中如何使用Sleep
例如Thread.Sleep(1000) ,表示线程休眠1000毫秒,时间过了之后再继续执行程序。在时间片算法中,所有的进程排成一个队列。操作系统按照他们的顺序,给每个进程分配一段时间,即该进程允许运行的时间。如果在 时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束...

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

C#中关于Thread.sleep(1000)的问题!!
如果你没加判断条件哪个线程执行sleep1秒就是10个线程都sleep1秒,如果判断了就是一个线程

c#线程sleep为什么可以提高性能?
sleep只是让这个线程暂时休眠吧,该线程休眠的时候不会占用cpu的资源,相对的这段时间内系统运行的更快...但是一旦开启了这个线程,它仍旧占用大量的cpu资源,所以说,不能说sleep可以提高系统的性能...我觉得“sleep为什么可以提高性能”这句话的本意可能是希望N个线程协调工作(不在冲突的方式下运行)来...

相似回答