仅停止一个线程 [英] Stopping only one thread
问题描述
我的应用程序中有很多线程,如何仅停止其中的一个线程?如果我使用Thread.Sleep()
,它将停止整个应用程序,我只想停止一个线程.我怎么做?我正在使用c#.
I have many threads in my application, how do I stop only one thread from them? If I use Thread.Sleep()
it stops the whole application, I just want to stop a single thread. How do I do that? I am using c#.
推荐答案
使用Thread.Sleep()
时,您仅停止调用此方法的线程.如果您的主线程(即UI线程)调用Thread.Sleep()
,则应用程序冻结(实际上其他线程仍在继续工作,但未刷新UI).因此,如果您想停止某个线程,则:
When you are using Thread.Sleep()
you are stopping only thread, which called this method. If your main thread (i.e. UI thread) calls Thread.Sleep()
, then application freezes (actually other threads continue working, but UI is not refreshed). So, if you want to stop some thread, then:
- 它不应该是主线程
- 只需在该线程上调用
Thread.Sleep()
示例(假设此代码在主线程上执行):
Example (assume this code is executed on main thread):
ThreadPool.QueueUserWorkItem(DoSomething);
Thread.Sleep(1000); // this will freeze application
这是一个回调(在后台线程上执行):
And this is a callback (which is executed on background thread):
static void DoSomething(object state)
{
Thread.Sleep(5000); // this will not freeze application
}
这篇关于仅停止一个线程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!