C# 暂停线程直到手动恢复
如何将线程置于暂停/睡眠状态,直到在c#中手动恢复它 目前我正在中止线程,但这不是我要找的。线程应该休眠/暂停,直到有东西触发它醒来。查看或。您应该通过 在另一个线程上,显然需要引用C# 暂停线程直到手动恢复,c#,.net,multithreading,visual-studio-2010,C#,.net,Multithreading,Visual Studio 2010,如何将线程置于暂停/睡眠状态,直到在c#中手动恢复它 目前我正在中止线程,但这不是我要找的。线程应该休眠/暂停,直到有东西触发它醒来。查看或。您应该通过 在另一个线程上,显然需要引用ManualResetEvent实例 mre.Set(); // Tells the other thread to go again 完整示例将打印一些文本,等待另一个线程执行某些操作,然后继续: class Program { private static ManualResetEvent mre =
ManualResetEvent
实例
mre.Set(); // Tells the other thread to go again
完整示例将打印一些文本,等待另一个线程执行某些操作,然后继续:
class Program
{
private static ManualResetEvent mre = new ManualResetEvent(false);
static void Main(string[] args)
{
Thread t = new Thread(new ThreadStart(SleepAndSet));
t.Start();
Console.WriteLine("Waiting");
mre.WaitOne();
Console.WriteLine("Resuming");
}
public static void SleepAndSet()
{
Thread.Sleep(2000);
mre.Set();
}
}
我以前从未这样做过,但我正在考虑使用ManualResetEvent阻塞线程。@ByteBlast:它看起来确实像是重复的,但是另一个问题的答案不是特别好:/确保只对后台线程执行此操作。UI线程(任何已加入COM STA的线程,通常是主线程,通常是任何因任何原因拥有窗口的线程)必须继续运行并发送消息,否则将导致稳定性问题。感谢您的帮助。我真的很感激@奈特:没问题,如果有帮助,请记住接受答案。是的,对不起,我忘了:)谢谢你的回复。我真的很感激
class Program
{
private static ManualResetEvent mre = new ManualResetEvent(false);
static void Main(string[] args)
{
Thread t = new Thread(new ThreadStart(SleepAndSet));
t.Start();
Console.WriteLine("Waiting");
mre.WaitOne();
Console.WriteLine("Resuming");
}
public static void SleepAndSet()
{
Thread.Sleep(2000);
mre.Set();
}
}