(三)线程--等待句柄(示例下载)
发布日期:2022-02-05 18:27:37
浏览次数:17
分类:技术文章
本文共 1800 字,大约阅读时间需要 6 分钟。
(一).描述
本示例代码实现线程等待等待执行,比如一个线程在执行之前要等待所有其它线程或某个线程先执行完成,或者等待其它线程至少一个执行完成.(二).代码 using System; using System.Runtime.Remoting.Messaging; using System.Threading;namespace 等待句柄
{ //委托声明(函数签名) delegate string MyMethodDelegate(); class MyClass { //要调用方法1 public string Write1() { for(double i = 0; i < 100000000000;i++) //此数值大小可以根据自己的环境修改, //目的是让此方法延长时间而已 { //延长时间(模拟实际任务) } Console.WriteLine("执行方法1"); return ""; }//要调用方法2
public string Write2() { Console.WriteLine("执行方法2"); return "22222222222222"; }//要调用方法3
public string Write3() { Console.WriteLine("执行方法3"); return "33333333333333"; }[STAThread]
static void Main(string[] args) { MyClass myClass = new MyClass(); MyMethodDelegate d1 = new MyMethodDelegate(myClass.Write1); MyMethodDelegate d2 = new MyMethodDelegate(myClass.Write2); MyMethodDelegate d3 = new MyMethodDelegate(myClass.Write3);AsyncResult myResult1,myResult2,myResult3; //此类封闭异步委托异步调用的结果,通过AsyncResult得到结果.
myResult1 = (AsyncResult)d1.BeginInvoke(null,null); //调用 myResult2 = (AsyncResult)d2.BeginInvoke(null,null); myResult3 = (AsyncResult)d3.BeginInvoke(null,null);//建立WaitHandle数组对象
WaitHandle[] waitHandle = new WaitHandle[3]{myResult1.AsyncWaitHandle,myResult2.AsyncWaitHandle,myResult3.AsyncWaitHandle};/*
try { //等待三个异步方法中的至少一个执行完成,才继续执行下面的语句 WaitHandle.WaitAny(waitHandle); } catch(Exception ex) { throw new Exception(ex.Message); }*/myResult1.AsyncWaitHandle.WaitOne(); //如果当前异步方法还没有完成,此异步方法执行完毕才往下执行
myResult2.AsyncWaitHandle.WaitOne(); myResult3.AsyncWaitHandle.WaitOne();/*
myResult1.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(1),false); //如果当前异步方法还没有完成,则等待一秒的时间执行此方法; 如果一秒后此方法还未完成的话,则不再等待,继续往下执行 myResult2.AsyncWaitHandle.WaitOne(); myResult3.AsyncWaitHandle.WaitOne();*/ Console.WriteLine("测试等待句柄"); //标记语句用. Console.Read(); } }} 本示例代码已经测试,能够正常运行! (三).示例下载转载地址:https://blog.csdn.net/lisong58420/article/details/2269975 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月22日 12时10分12秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
剖析PHP中的输出缓冲
2019-04-27
HTTP响应头不缓存
2019-04-27
phpize
2019-04-27
PHP安装eAccelerator
2019-04-27
PHP新的垃圾回收机制:Zend GC详解
2019-04-27
linux上使用strace查看C语言级别的php源码【一种方法】
2019-04-27
ACCEPT()和ACCEPT4()
2019-04-27
php内核探索方法与资源
2019-04-27
PHP安装扩展mcrypt以及相关依赖项 【PHP安装PECL扩展的方法】
2019-04-27
Javascript到PHP加密通讯的简单实现
2019-04-27
德国SNS交友/视频网站Poppen.de的技术架构分享
2019-04-27
UNIX环境编程
2019-04-27
一笔画问题【数据结构-图论】
2019-04-27
红黑树
2019-04-27
安装多个gcc
2019-04-27
Linux0.01内核根目录Makefile注释
2019-04-27
【CSDN2012年度博客之星】需要您的一票,感谢大家的支持
2019-04-27
PHP对于浮点型的数据需要用不同的方法去解决
2019-04-27
Tokyo Cabinet 安装
2019-04-27
Flink在美团的应用与实践听课笔记
2019-04-27