相关疑难解决方法(0)

异步方法和异步委托

简而言之,C#3.0异步方法异步委托看起来很相似,但行为却截然不同.

这是本书所说的两者.

异步方法

  1. 很少或从不阻止任何线程.
  2. Begin方法可能不会立即返回给调用者.
  3. 一个没有C#语言支持的商定协议.

异步代理

  1. 可以阻止任何时间长度
  2. BeginInvoke立即返回给调用者.
  3. 内置编译器支持.

该书还说,异步方法的目的是允许许多任务在少数线程上运行; 异步委托的目的是与调用者并行执行任务.

当我通过反射器查看System.IO.Stream类中的BeginRead()方法时,它正在使用委托并在其上调用BeginInvoke.因此异步方法在内部使用异步委托.

  1. 在这种情况下,怎么能说他们的行为不同?既然它在内部使用委托,那么如何进行上述比较呢?
  2. 您是否认为使用委托的BeginXXX方法是与调用者并行执行函数的方法?
  3. 通过保持充分利用CPU等所有优点来实现异步方法的正确方法是什么?

有什么想法吗?

.net c# multithreading asynchronous

10
推荐指数
2
解决办法
4365
查看次数

标签 统计

.net ×1

asynchronous ×1

c# ×1

multithreading ×1