- using System;
- using System.Threading;
- namespace ConsoleApplication1
- {
- class Class1
- {
- //声明委托
- public delegate void AsyncEventHandler();
- //异步方法
- void Event1()
- {
- Console.WriteLine("Event1 Start");
- System.Threading.Thread.Sleep(4000);
- Console.WriteLine("Event1 End");
- }
- // 同步方法
- void Event2()
- {
- Console.WriteLine("Event2 Start");
- int i = 1;
- while (i < 10)
- {
- i = i + 1;
- Console.WriteLine("Event2 " + i.ToString());
- }
- Console.WriteLine("Event2 End");
- }
- void Event3()
- {
- Console.WriteLine("Event3 Start");
- for (int i = 0; i < 100; i++)
- {
- Thread.Sleep(5);
- Console.WriteLine(i.ToString());
- }
- Console.WriteLine("Event3 End.");
- }
- [STAThread]
- static void Main(string[] args)
- {
- long start = 0;
- long end = 0;
- Class1 c = new Class1();
- Console.WriteLine("ready");
- start = DateTime.Now.Ticks;
- //实例委托
- AsyncEventHandler asy = new AsyncEventHandler(c.Event1);
- //异步调用开始,没有回调函数和AsyncState,都为null
- IAsyncResult ia = asy.BeginInvoke(null, null);
- //同步开始,
- c.Event2();
- //异步结束,若没有结束,一直阻塞到调用完成,在此返回该函数的return,若有返回值。
- asy.EndInvoke(ia);
- //都同步的情况。
- //c.Event1();
- //c.Event2();
- end = DateTime.Now.Ticks;
- Console.WriteLine("时间刻度差=" + Convert.ToString(end - start));
- Console.ReadLine();
- }
- }
- }
简单的异步
原创
©著作权归作者所有:来自51CTO博客作者编程的世界你不懂的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
GoldenDB的简单安装
本文对goldendb配置进行了安装。比较简单。
goldendb集群安装 -
ajax同步,异步简单的介绍
星期天一个人捣鼓个人网站的事情,read8686.com,如果哪位开发者又欢迎大家一起探讨,在文章将用户所...
ajax sync json 用户名 -
一款简单高效的Android异步框架
当我们在用java进行Android开发时,经常会涉及到线程间的切换操作。由子线程执行耗时任务,执行完毕后再切到
android echarts ide Async java -
AJAX异步局部更新简单案列
ajax简单案例
ajax 异步 html php 全局变量