zoukankan
html css js c++ java
(三)线程等待句柄
(一).描述
本示例代码实现线程等待等待执行,比如一个线程在执行之前要等待所有其它线程或某个线程
先执行完成,或者等待其它线程至少一个执行完成.
(二).代码
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();
}
}
}
查看全文
相关阅读:
mysql存储过程及拼接字符串的用法
SpringMVC的工作原理
3年java工作经验必备技能
HashMap的源码,实现原理,底层结构
十年软件测试感悟,写给想要转行的测试新人。
软件自动化测试有了测试工程师就等于有了质量?
为何你的简历石沉大海?这份新鲜出炉的测试用人需求分析报告揭示了原因。
【软件测试】Python自动化软件测试算是程序员吗?
达内教育培训怎么样,值得去吗?
软件测试员最核心的竞争力究竟是什么? 爱码小哥
原文地址:https://www.cnblogs.com/engine1984/p/862972.html
最新文章
Jsoup 配置和使用
JavaScript 加密方法(Hash算法)
Pointer Lock API
使用Maven下载依赖包
Unity3d 实例化对象
客户端 JavaScript 程序
Java中equals和=的区别
自动任务配置
JSON 格式 转对象
MYsql 数据类型与java对于类型
热门文章
计算一周区间段
Mybaits insert之后返回对象带ID
html5 动态修改TITLE标题
easyUI form提交与springMVC交互时服务端返回的错误处理
一个页面跳的另一个页面传值获取方法
getSession赋值
Map 遍历
freemarker根据模板生成word文件实现导出功能
java实现excel生成和导出
java乱码解决方法
Copyright © 2011-2022 走看看