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();
}
}
}
查看全文
相关阅读:
java.net.BindException: Address already in use: 解决方法
openlayers中单击获取要素
OpenLayers绘制图形
springboot启动失败( No active profile set, falling back to default profiles: default)
Java学习日报7.16
Java学习日报7.15
Java学习日报7.14
Java学习日报7.13
Java学习日报7.12
Java学习日报7.10
原文地址:https://www.cnblogs.com/engine1984/p/862972.html
最新文章
chrome 调试 定位不了错误位置
JS中的prototype、__proto__与constructor
tf 监听自己的坐标按官方例子一直不行不问题
ros PC发移动命令小车不移动的问题
多机器人逻辑 patrolling_sim
基于ROS1.0的stdr simulation搭建多移动机器人(multiple robots)仿真系统
tf static_transform_publisher
无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它
无人机通信协议MAVLink简介
ROS机器人操作系统架构图
热门文章
ROS2.0整体架构说明
ubuntu 16.04 镜像
数据量大时——使用分布式
ROS数据可视化工具Rviz和三维物理引擎机器人仿真工具V-rep Morse Gazebo Webots USARSimRos等概述
spring boot找不到或无法加载主类 io.renren.RenrenApplication
ubuntu 18.04 自启动
https://www.cnblogs.com/limanjihe/p/10184327.html
Could not open lock file/var/lib/dpkg/lock的解决
解决ubuntu 18更换wifi vnc 连接不了的问题
JSHOP2
Copyright © 2011-2022 走看看