c# AutoResetEvent

前言

在异步中如何控制两个线程这样运动呢,在A线程执行到某个位置的时候等待B线程执行,然后B运行到某个位置有又开始运行A,这时候可以用AutoResetEvent。

正文

代码:

private static AutoResetEvent _workerEvent = new AutoResetEvent(false);
private static AutoResetEvent _mainEvent = new AutoResetEvent(false);
static void Main(string[] args)
{
	var t = new Thread(() => Process(10));
	t.Start();
	Console.WriteLine("start process sign!");
	_workerEvent.WaitOne();
	Thread.Sleep(TimeSpan.FromSeconds(5));
	_mainEvent.Set();
	Console.WriteLine("_workerEvent ");
	_workerEvent.WaitOne();
}

static void Process(int seconds)
{
	Console.WriteLine("Starting a long running work....");
	Thread.Sleep(TimeSpan.FromSeconds(2));
	Console.WriteLine("Work is done");
	_workerEvent.Set();
	Console.WriteLine("Waiting for a main thread to complete its work");
	_mainEvent.WaitOne();
	Console.WriteLine("Starting second operation....");
	Console.WriteLine("Work is done!");
	Console.WriteLine("_workerEvent release ");
	_workerEvent.Set();
}

这个可以自己跑一遍。

后续

原理后续补齐。

posted @ 2020-07-01 16:48  敖毛毛  阅读(342)  评论(0编辑  收藏  举报