线程的等待时可以用这个,不论是线程池还是线程都可以用这个做等待。


ManualResetEvent md=new ManualResetEvent(false);//这个false 设置线程等待, true 允许线程不待等
IAsyncResult result= new Action<string>((t) =>
{
Console.WriteLine(t);
mre.Set();//允许线程不用继续等待,可以执行下去
}).BeginInvoke("你好",null,null);
mre.WaitOne();//主线程被卡在这里,等待信号量变成true(mre.Set()这个方法后就可变为true不用等待)
Console.WriteLine("你吃饭了么!");
mre.Reset();//重新设为线程等待 IAsyncResult result01= new Action<string>((t) =>
{
Console.WriteLine(t);
mre.Set();//设置线程不用继续等待,可以执行下去
}).BeginInvoke("还没吃",null,null);
mre.WaitOne();//又被阻塞了
Console.WriteLine("一起吃饭吧!");
//输出结果
你好
你吃饭了么!
还没吃
一起吃饭吧! //线程池中的使用
mre.Reset();
ThreadPool.QueueUserWorkItem((t) =>
{
Console.WriteLine("我是从线程池中走出的线程!");
mre.Set();
});
mre.WaitOne();

当然也可以用循环待等的执行的方式进行线程待等

 while (!result.IsCompleted)
{
Thread.Sleep(500);
Console.WriteLine("我在等你回复!"); }
Console.WriteLine("我吃了!");

最新文章

  1. 大气散射 GPU Gems2 Chapter 16. Accurate Atmospheric Scattering
  2. 基于jquery封装的颜色下拉选择框
  3. texstudio on ubuntu 12.04
  4. 修改oracle密码有效期限制
  5. Lua中调用C函数
  6. JQuery的复选框选中、取消、全选,全不选问题
  7. [BILL WEI] stimulsoft 分组页眉页脚的使用
  8. 搭建Git本地服务器
  9. WPF实现窗体最小化后小图标在右边任务栏下
  10. 动态分配内存补充 realloc
  11. 转:触屏中的js事件
  12. 直接在script里面换样式IE6,7,8不兼容
  13. python获取当前运行程序的名字
  14. AspNetCoreMvc使用MongoDB,快来get一下吧。
  15. 解决Loading class `com.mysql.jdbc.Driver&#39;. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver&#39;.
  16. Android Stuido 方法参数 p0,p1
  17. .NET分布式缓存Memcached从入门到实战
  18. ionic入门教程-ionic路由详解(state、route、resolve)(转)
  19. JavaScript中的递归
  20. DedeCMS中channelartlist自增参数global.itemindex

热门文章

  1. 回顾Servlet及SpringMVC
  2. mybatis框架之装饰模式
  3. 替换OSD操作的优化与分析
  4. PHP curl_exec函数
  5. JS中的setTimeout()函数
  6. Python基础教程(022)--Pycharm快速体验
  7. LOJ 6436 「PKUSC2018」神仙的游戏——思路+卷积
  8. 用K-近邻算法分类和回归
  9. Markdown ![...](...) --&gt; &lt;img ... /&gt;
  10. urllib爬取实例