异步调用

本文通过C#代码示例介绍了同步与异步调用的区别,并详细展示了如何使用异步回调处理长时间运行的任务,使得主线程可以处理其他工作。
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Runtime.Remoting.Messaging;
 5 using System.Text;
 6 using System.Threading;
 7 
 8 namespace InvokeTest
 9 {
10     class Program
11     {
12         static void Main(string[] args)
13         {
14             Console.WriteLine("---开始同步调用---");
15             //同步调用
16             //AddHandler addHandler = new AddHandler(AddFunction);
17             //int retValue=addHandler.Invoke(20, 45);
18             //Console.WriteLine("继续做别的事情。。。");
19             //Console.WriteLine(retValue);
20             //Console.ReadKey();
21 
22             //异步调用
23             //AddHandler addHandler = new AddHandler(AddFunction);
24             //IAsyncResult result = addHandler.BeginInvoke(18,12,null,null);
25             //Console.WriteLine("继续做别的事情。。。");
26             //Console.WriteLine(addHandler.EndInvoke(result));
27             //Console.ReadKey();
28 
29             //异步回调
30             AddHandler addHandler = new AddHandler(AddFunction);
31             IAsyncResult result = addHandler.BeginInvoke(18, 12, new AsyncCallback(CallBackFunction), "回调完成");
32             Console.WriteLine("继续做别的事情。。。");
33             Console.ReadKey();
34         }
35 
36         /// <summary>
37         /// 回调方法
38         /// </summary>
39         public static void CallBackFunction(IAsyncResult result)
40         {
41             AddHandler handler = (AddHandler)((AsyncResult)result).AsyncDelegate;
42             Console.WriteLine(handler.EndInvoke(result));
43             Console.WriteLine(result.AsyncState);
44         }
45 
46         public delegate int AddHandler(int a,int b);
47         public static int AddFunction(int a, int b)
48         {
49             Console.WriteLine("---开始计算---");
50             Thread.Sleep(3000);
51             Console.WriteLine("---计算完成---");
52             return a + b;
53         }
54 
55     }
56 }

 

转载于:https://www.cnblogs.com/zuiyuewentian/p/5175558.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值