-
有时,你需要让某线程一直处于等待状态,直至接收到其他线程发来的通知,这就叫做signaling(发送信号)
-
最简单的信号结构就是ManualResetEvent 。
调用他上面的WaitOne 方法就会阻塞当前线程,直到另一个线程通过调用Set方法,来开启信号。 -
在调用完Set之后, 信号就会打开状态,可以通过调用Reset方法将其再次关闭。
for text
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Diagnostics;
namespace ConsoleProgram
{
class Program
{
static void Main(string[] args)
{
var manua = new ManualResetEvent(false);
Thread work = new Thread(() => {
Console.WriteLine("SubThread Waiting Signal...");
manua.WaitOne();
manua.Dispose();
Console.WriteLine("Get manual Signal。");
});
if (args.Length>0)
{
work.IsBackground = true;
}
work.Start();
Thread.Sleep(3000);
manua.Set();
Console.ReadKey(true);
}
}
}