ManualResetEvent怎么在C#项目中使用

这期内容当中小编将会给大家带来有关ManualResetEvent怎么在C#项目中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

第一、简单介绍

ManualResetEvent 允许线程通过发信号互相通信。通常,此通信涉及一个线程在其他线程进行之前必须完成的任务。当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时,它调用 Reset 以将 ManualResetEvent 置于非终止状态,此线程可被视为控制 ManualResetEvent。调用 ManualResetEvent 上的 WaitOne 的线程将阻止,并等待信号。

当控制线程完成活动时,它调用 Set 以发出等待线程可以继续进行的信号。并释放所有等待线程。一旦它被终止,ManualResetEvent 将保持终止状态(即对 WaitOne 的调用的线程将立即返回,并不阻塞),直到它被手动重置。可以通过将布尔值传递给构造函数来控制 ManualResetEvent 的初始状态,

如果初始状态处于终止状态,为 true;否则为 false。

ManualResetEvent怎么在C#项目中使用

第二、代码演示

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading;
usingSystem.Threading.Tasks;

namespaceConsoleApplication2
{
classMyThread
{
Threadt=null;
ManualResetEventmanualEvent=newManualResetEvent(true);//为trur,一开始就可以执行
privatevoidRun()
{
while(true)
{
this.manualEvent.WaitOne();
Console.WriteLine("线程id:{0}",Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(2000);
}
}

publicvoidStart()
{
this.manualEvent.Set();
}

publicvoidStop()
{
this.manualEvent.Reset();
}

publicMyThread()
{
t=newThread(this.Run);
t.Start();
}

}

classProgram
{
staticvoidMain(string[]args)
{
MyThreadmyt=newMyThread();
while(true)
{
Console.WriteLine("输入stop后台线程挂起start开始执行!");
stringstr=Console.ReadLine();
if(str.ToLower().Trim()=="stop")
{
Console.WriteLine("线程停止运行...\n");
myt.Stop();
}
if(str.ToLower().Trim()=="start")
{
Console.WriteLine("线程开启运行...\n");
myt.Start();
}
}
}

}
}

运行测试结果

ManualResetEvent怎么在C#项目中使用

上述就是小编为大家分享的ManualResetEvent怎么在C#项目中使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注恰卡编程网行业资讯频道。

发布于 2021-04-03 22:31:29
收藏
分享
海报
0 条评论
163
上一篇:如何正确的使用ListView 下一篇:怎么在linux中使用crontab 定时执行任务
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码