zoukankan
html css js c++ java
异步方式调用同步方法
一段异步方式调用同步方法代码
执行顺序 执行主程序>>执行异步调用>>执行
WaitOne()后代码>>执行回调>>执行主程序
using
System.Text;
using
System.Data;
using
System.Data.SqlClient;
using
System.Collections;
using
System.Threading;
using
System.IO;
using
System.Runtime.InteropServices;
using
System;
using
System.Runtime.Remoting.Messaging;
namespace
Program
{
public
class
Programmers
{
public
static
void
Main(
string
[] args)
{
Programmers pr
=
new
Programmers();
Console.WriteLine(
"
开始执行
..
"
);
pr.smork();
Thread.Sleep(
1000
);
//
注释掉结果有点不同
Console.WriteLine(
"
我是主线程
"
);
Console.ReadLine();
}
delegate
void
mydelegate();
private
void
smork()
{
/**/
///
异步方式调用同步方法1
AsyncCallback mycallback
=
new
AsyncCallback(tellyou);
//
(回调函数)
mydelegate mdg
=
new
mydelegate(move);
IAsyncResult result
=
mdg.BeginInvoke(mycallback,
null
);
result.AsyncWaitHandle.WaitOne();
//
等待异步完成
Console.WriteLine(
"
异步调用后
"
);
MyRegion
#region
MyRegion
//
异步方式调用同步方法2
//
AsyncCallback mycallback = new AsyncCallback(tellyou);
//
mydelegate mdg = new mydelegate(move);
//
IAsyncResult result = mdg.BeginInvoke(mycallback, null);
//
while (!result.IsCompleted)
//
{
//
//
Thread.Sleep(50);
//
不要与要有区别
//
}
/**/
///
/ 异步方式调用同步方法3(没有回调函数)
//
mydelegate mdg = new mydelegate(move);
//
IAsyncResult result = mdg.BeginInvoke(null, null);
//
while (!result.IsCompleted)
//
{
//
//
Thread.Sleep(60);
//
}
//
mdg.EndInvoke(result);
//
停止调用
//
异步方式调用同步方法4(没有回调函数)
//
mydelegate mdg = new mydelegate(move);
//
IAsyncResult result = mdg.BeginInvoke(null, null);
//
result.AsyncWaitHandle.WaitOne();
//
mdg.EndInvoke(result);
//
停止调用
#endregion
}
public
void
move()
{
for
(
int
i
=
0
; i
<
5
; i
++
)
{
Console.WriteLine(
"
异步任务执行
"
);
Thread.Sleep(
1000
);
}
}
public
void
tellyou(IAsyncResult result)
//
回调函数
{
//
Console.WriteLine("异步任务完成");
//
当异步完成后输出结果 通知已经异步完了
AsyncResult asyncResult
=
result
as
AsyncResult;
mydelegate mydelegate
=
asyncResult.AsyncDelegate
as
mydelegate;
mydelegate.EndInvoke(result);
if
(result.IsCompleted)
{
Console.WriteLine(
"
异步任务完成
"
);
}
}
}
}
查看全文
相关阅读:
实习差不多一个月了
多一个角度,多一分收获
走出第一步
.net中枚举enum的复习与实例
瞧瞧UC浏览器对CSS样式的“关怀”
关于cookie(基础)
用ajax提交数据到ashx用JSON.stringify格式化参数后在服务器端取不到值?[转载至:http://q.cnblogs.com/q/34266/]
[转载] SQL进行排序、分组、统计的10个新技巧
css样式解决圆角等多种难解决的问题 (转载至:Lanny☆兰东才)
让人想不通的突然button事件失灵了?(小心页面form表单嵌套)
原文地址:https://www.cnblogs.com/xiaobaigang/p/927920.html
最新文章
Mono 之 Jexus
Android 自定义View 启航 一般View定义
Mono 之 Nginx
Asp.net Mvc 请求是如何到达 MvcHandler的——UrlRoutingModule、MvcRouteHandler分析,并造个轮子
KSoap2 使用 悲催记 ——服务器无法处理请求 ——<soap:Fault>
条码扫描二维码扫描——ZXing android 源码简化
Android 开源项目StandupTimer学习笔记索引
Mono 之 HelloWorld
拒绝服务攻击漏洞Hash
由【说说JSON和JSONP..】博文,想到的MVC 扩展
热门文章
Mono 之 单元测试
思考过后方可断言
使用Gitblit 在windows 上部署你的Git Server
word无法创建工作文件,IE打开网页很慢
linux进程VIRT虚拟内存数值高
vs2010+转换到 COFF 期间失败
Java命令如何编译项目
windows删除用户时用户不属于此组
关于Navicat Premium 15 安装时出现 rsa public key not find 的问题
需求与设计的主要过程总结
Copyright © 2011-2022 走看看