异步委托(APM)使用Func异步操作,处理耗时操作

本文介绍了一个使用 C# 中的委托进行异步操作的例子。通过 BeginInvoke 和 EndInvoke 方法实现耗时任务的非阻塞执行,避免了主线程的等待。此示例展示了如何启动一个异步任务,并在任务完成后执行回调。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用委托进行异步操作,处理一些耗时操作,防止主线程阻塞

使用例子:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace Demo
 7 {
 8     class Program
 9     {
10 
11         static void Main(string[] args)
12         {
13             Func<string> fun = new Func<string>(Test);   
14             Console.WriteLine("异步执行开始(异步委托的方法):" + fun.Method);
15            IAsyncResult asyncResult= fun.BeginInvoke(CallBack,new string []{"sadha","sahsiuh"});  //开始异步操作
16 
17             for (int i = 0; i < 10;i++ )
18             {
19                 Console.WriteLine("异步方法执行时同时执行其它代码:"+i);
20             }
21 
22             fun.EndInvoke(asyncResult);  //结束异步
23             Console.ReadKey();
24         }
25 
26         /// <summary>
27         /// 异步执行的方法
28         /// </summary>
29         /// <returns></returns>
30         public static string Test()
31         {
32             return DateTime.Now.ToString();
33         }
34 
35         /// <summary>
36         /// 异步方法执行完成回掉的方法
37         /// </summary>
38         /// <param name="async"></param>
39         public static void CallBack(IAsyncResult async)
40         {
41             string [] array= async.AsyncState as string [];
42             Console.WriteLine("异步操作是否完成:"+ async.IsCompleted);
43         }
44     }
45 }

上述代码运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值