zoukankan
html css js c++ java
异步调用委托的3种方法
异步调用委托的3种方法
using
System;
using
System.Collections.Generic;
using
System.Text;
namespace
AsyncDelegate
{
class
Program
{
delegate
int
IntIntDelegate(
int
x);
//
生明一个委托
int
Square(
int
x)
{
return
x
*
x;
}
void
AsyncDelegateExample()
{
IntIntDelegate f
=
Square;
//
方法一
IAsyncResult ar1
=
f.BeginInvoke(
10
,
null
,
null
);
while
(
!
ar1.IsCompleted)
//
循环直到异步完成
Console.WriteLine(f.EndInvoke(ar1));
//
do some work
//
方法二
IAsyncResult ar2
=
f.BeginInvoke(
20
,
null
,
null
);
//
do some work
ar2.AsyncWaitHandle.WaitOne();
//
等待直到异步完成
Console.WriteLine(f.EndInvoke(ar2));
//
方法三 完成后调用回调函数,取得结束通知的结果
IAsyncResult ar3
=
f.BeginInvoke(
30
, AsyncDelegateCallback, f);
}
void
AsyncDelegateCallback(IAsyncResult ar)
//
回调函数
{
IntIntDelegate f
=
(IntIntDelegate)ar.AsyncState;
if
(ar.IsCompleted)
{
Console.WriteLine(f.EndInvoke(ar));
}
//
Console.WriteLine(f.EndInvoke(ar));
}
static
void
Main(
string
[] args)
{
Program test
=
new
Program();
test.AsyncDelegateExample();
//
客户端调用
}
}
}
输出: 100
400
900
查看全文
相关阅读:
疯狂学java的第七天
疯狂学java的第六天
疯狂学java的第五天
学java的第四天
学java的第三天
javaSE_20_常用API(包装类丶BigInteger类丶BigDecimal类 )
javaSE_19_常用API(String类丶StringBuffer类)
javaSE_17_内部类丶常用的引用类型用法总结
javaSE_15_package和import丶访问控制权限
javaSE_14_抽象类丶接口
原文地址:https://www.cnblogs.com/xiaobaigang/p/931016.html
最新文章
ArcEngine开发——事件
ArcEngine多线程开发
AE栅格计算——创建常量栅格数据集
ArcObject对象序列化和反序列化
ArcEngine——异步执行GP工具(Background geoprocessing)
ArcEngine 程序运行时在IAoInitialize m_AoInitialize = new AoInitializeClass();处报错--解决办法
AE DataTable转换为ITable(内存工作空间中)
ArcEngine二次开发——图形选择
2020软件工程个人作业06——软件工程实践总结作业
2020软件工程作业05
热门文章
2020软件工程作业04(2.0)
2020软件工程作业03
问题清单
2020软件工程作业02
2020软件工程作业01
疯狂学java的第12天
疯狂学java的第11天
疯狂学java的第10天
疯狂学java的第9天
疯狂学java的第八天
Copyright © 2011-2022 走看看