20、C 异步委托与原生 DLL 集成技术详解

C# 异步委托与原生 DLL 集成技术详解

1. 异步委托

在编程中,有时我们希望异步调用方法,这样调用会立即返回,而方法在单独的线程上执行。运行时提供了一种标准方式,可异步调用任何方法,同时考虑到获取返回值以及提供给方法的 ref/in 参数。

当 C# 编译器遇到委托时,它生成的委托派生类包含三个关键方法:
- return-type Invoke (parameter-list);
- IAsyncResult BeginInvoke (parameter-list, AsyncCallback ac, object state);
- return-type EndInvoke (ref/out-only parameter-list, IAsyncCallback ac);

以下是对这三个方法的详细解释:
- Invoke() :同步调用方法,调用者必须等待委托执行完成(C# 中的标准委托调用会调用 Invoke())。
- BeginInvoke() :使用提供的参数列表调用委托,然后立即返回。此异步调用会在 ThreadPool 中有可用线程时立即执行。BeginInvoke() 还添加了两个额外参数:一个 AsyncCallback 对象,用于可选地指定一个委托,该委托将在 ThreadPool 线程返回之前由该线程执行;以及一个任意对象,用于保存状态。AsyncCallback 委托的签名是一个带有单个 IAsyncResult 参数的 void 方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值