using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Runtime.Remoting.Messaging;
namespace ConsoleApplication1
{
public delegate int AddHandler(int a, int b);
public class AddMethod
{
public static int Add(int a, int b)
{
Console.WriteLine("开始计算:" + a + "+" + b);
Thread.Sleep(3000); //模拟该方法运行三秒
Console.WriteLine("计算完成!");
return a + b;
}
}
//**************同步调用***********
//委托的Invoke方法用来进行同步调用。同步调用也可以叫阻塞调用,它将阻塞当前线程,然后执行调用,调用完毕后再继续向下进行。
//**************异步调用***********
//异步调用不阻塞线程,而是把调用塞到线程池中,程序主线程或UI线程可以继续执行。
//委托的异步调用通过BeginInvoke和EndInvoke来实现。
//**************异步回调***********
//用回调函数,当调用结束时会自动调用回调函数,解决了为等待调用结果,而让线程依旧被阻塞的局面。
//注意: BeginInvoke和EndInvoke必须成对调用.即使不需要返回值,但EndInvoke还是必须调用,否则可能会造成内存泄漏。
class Program
{
static void Main(string[] args)
{
Console.WriteLine("===== 同步调用 SyncInvokeTest =====");
AddHandler handler = new AddHandler(AddMethod.Add);
int result=handler.Invoke(1,2);
Console.WriteLine("继续做别的事情。。。");
Console.WriteLine(result);
Console.ReadKey();
Console.WriteLine("===== 异步调用 AsyncInvokeTest =====");
AddHandler handler1 = new AddHandler(AddMethod.Add);
IAsyncResult result1=handler1.BeginInvoke(1,2,null,null);
Console.WriteLine("继续做别的事情。。。");
//异步操作返回
Console.WriteLine(handler1.EndInvoke(result1));
Console.ReadKey();
Console.WriteLine("===== 异步回调 AsyncInvokeTest =====");
AddHandler handler2 = new AddHandler(AddMethod.Add);
IAsyncResult result2 = handler2.BeginInvoke(1, 2, new AsyncCallback(Callback), null);
Console.WriteLine("继续做别的事情。。。");
Console.ReadKey();
//异步委托,也可以参考如下写法:
//Action<object> action=(obj)=>method(obj);
//action.BeginInvoke(obj,ar=>action.EndInvoke(ar),null);
//简简单单两句话就可以完成一部操作。
}
static void Callback(IAsyncResult result)
{
AddHandler handler = (AddHandler)((AsyncResult)result).AsyncDelegate;
Console.WriteLine(handler.EndInvoke(result));
}
}
}</object>
C#异步方法执行代码
来源:这里教程网
时间:2026-02-21 13:01:06
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 《超级马力欧银河大电影》角色阵容泄露,瓦力欧有望联手库巴 Jr.登场
《超级马力欧银河大电影》角色阵容泄露,瓦力欧有望联手库巴 Jr.登场
26-02-21 - LibreOffice 抨击 OnlyOffice 是“伪开源”,联手微软裹挟用户
- 任天堂 GBA 经典复刻《宝可梦 火红/叶绿》上架 Switch 商店,2 月 27 日正式发售
- 索尼出手叫停粉丝重制《血源诅咒》项目,系列游戏前景渺茫
索尼出手叫停粉丝重制《血源诅咒》项目,系列游戏前景渺茫
26-02-21 - 游戏《尼尔:自动人形》累计销量突破 1000 万份
游戏《尼尔:自动人形》累计销量突破 1000 万份
26-02-21 - 育碧多伦多工作室裁员 40 人,《细胞分裂》重制版游戏仍在推进
育碧多伦多工作室裁员 40 人,《细胞分裂》重制版游戏仍在推进
26-02-21 - NZXT 恩杰推出《尼尔》系列 15 周年纪念款 H5 Flow 机箱
NZXT 恩杰推出《尼尔》系列 15 周年纪念款 H5 Flow 机箱
26-02-21 - 《使命召唤:黑色行动 7》登顶美国 1 月游戏销量榜,《GTA5》《荒野大镖客:救赎 2》仍在榜单前十
- 美国洛杉矶政府起诉《Roblox》游戏,指其成恋童癖犯罪温床
美国洛杉矶政府起诉《Roblox》游戏,指其成恋童癖犯罪温床
26-02-21 - 消息称第十世代《宝可梦:风 / 浪》游戏 2 月 27 日亮相
消息称第十世代《宝可梦:风 / 浪》游戏 2 月 27 日亮相
26-02-21
