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单例模式
svn 清理失败 (clean up 失败) 的解决方法
linux chrome 安装过程记录
docker
linux-cat-grep
linux-批量结束进程
linux-压缩与解压缩(gz,zip,tar,jar,war)
git-服务器地址切换
linux-tomcat连接数查询
git-无法add文件的问题
原文地址:https://www.cnblogs.com/engine1984/p/862972.html
最新文章
检查端口是否可用
Gitbook配置目录折叠
GitBook在Windows上安装及使用
Mongo基于Java基本操作
Mongo基本命令
Java系列笔记(6)
Java系列笔记(0)
Java系列笔记(5)
Java系列笔记(4)
Java系列笔记(3)
热门文章
Java系列笔记(2)
Java系列笔记(1)
vue学习笔记-遗留问题记录
SpringCloud微服务学习笔记
SpringMvc问题记录-Controller对于静态变量的访问分析
SpringCloud微服务笔记-Nginx实现网关反向代理
SpringCloud微服务学习笔记
Centos配置java环境
C# 关键字extern用法
Git
Copyright © 2011-2022 走看看