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 0
0
相关文章
c# solid原则是什么
blazor 是什么 blazor和vue/react对比
c# C# 中的 Volatile.Read 和 Volatile.Write
c# Thread.ApartmentState (STA/MTA) 和并发的关系
Blazor 项目发布和部署到 IIS 的步骤
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
C++ 高级模板编程与元编程
本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。
10
2026.01.23
Golang 性能分析与pprof调优实战
本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。
9
2026.01.22
热门下载
精品课程
相关推荐
/
热门推荐
/
最新课程
最新文章







