using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Collections;
using System;
using System.Collections.Generic;
namespace ldg
{
public class test
{`在这里插入代码片`
// static Thread th = new Thread(() => threadTest()){IsBackground = true };
//上面这行注释掉的代码跟下面这行代码是一样的作用,创建一个线程,并让这个线程成为后台线程
static Thread th = new Thread(threadTest) { IsBackground = true };
//创建一个ManualResetEvent对象_event,通知一个或多个等待的线程
static ManualResetEvent _event = new ManualResetEvent(false);
static void Main(string[] args)
{
th.Start();
Thread.Sleep(2000);
/*_event.Reset();当事件状态设置为非终止状态,从而导致线程受阻
* 意思就是执行这叫的时候, threadTest()中的 _event.WaitOne();这句会受阻止
* 直到执行 _event.Set();后才会执行threadTest()中的 _event.WaitOne();的下一句
* 自己可以加断点调试,一试便知
* *************************************************/
_event.Reset();
Thread.Sleep(2000);
_event.Set();
Thread.Sleep(2000);
for (int i = 0; i < 100; i++)
{
if (i % 2 == 0)
_event.Set();
else
_event.Reset();
}
Console.ReadKey();
}
static void threadTest()
{
while (true)
{
_event.WaitOne();
Console.WriteLine("Love 523 !" + DateTime.Now.ToLongTimeString());
Thread.Sleep(100);
}
}
}
}
//本代码摘自架构师网站
//.net/c# Thread线程Suspend和Resume过时解决方案
//[https://www.itsvse.com/thread-4769-1-1.html](https://www.itsvse.com/thread-4769-1-1.html)
//(出处: 架构师_程序员)
C# Thread和ManualResetEvent学习记录,Thread线程Suspend和Resume过时解决方案
最新推荐文章于 2022-04-07 17:36:26 发布