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();
}
}
}
查看全文
相关阅读:
Python--my first try!
AB PLC首次IP地址如何分配
如何解压DMK固件
罗克韦尔自动化官网如何下载设备固件
如何使用AB PLC仿真软件Studio 5000 Logix Emulate
Studio 5000指令IN_OUT管脚实现西门子风格
AB PLC分类
罗克韦尔自动化发展简史
C#曲线分析平台的制作(五,Sqldependency+Signalr+windows 服务 学习资料总结)
自动化监控上位机系统二次开发之我见
原文地址:https://www.cnblogs.com/engine1984/p/862972.html
最新文章
解决ubuntu16.04在anaconda3下安装tensorflow后,打开jupyter notebook 不能导入tensorflow的问题
在anaconda3下安装tensorflow的cpu版ubuntu16.04
linux环境变量
shell脚本学习笔记(2)
linux shell 脚本
hdu 1878 欧拉回路+并查集
hdu 1358 KMP next数组的运用
hdu 3746 KMP 循环节
hdu 1166 线段树 单点更新 区间查询
hdu 1576 扩展欧几里得
热门文章
快速幂
2017 ccpc女生专场 1003 Coprime Sequence
hdu 1517 博弈论
bfs hdu 2717 Catch That Cow
zoj 2136 Longest Ordered Subsequence
数据类型和控制结构
python基础知识和练习代码
正则表达式
Python循环
Python变量
Copyright © 2011-2022 走看看