简单地说,C# 3.0,说异步方法和异步委托看起来很相似,但是行为非常不同。
以下是这本书对两者的看法。
异步方法
异步委托
对于任意长度的time
书中还说,异步方法的目的是允许多个任务在几个线程上运行;异步委托的目的是与调用者并行执行任务。
当我通过反射器查看System.IO.Stream类中的System.IO.Stream()方法时,它使用的是委托并对此调用BeginInvoke。因此,异步方法在内部使用异步委托。
等所有优点来实现异步方法的正确方法是什么?
有什么想法吗?
发布于 2009-09-13 18:00:39
实现可能是不同的;例如,异步IO调用可以选择使用完成端口,以便在不执行任何操作的情况下将对系统的成本降到最低。
我认为这本书试图强调的是,代表们总是包括这样的模式:
Invoke),它可以阻止异步调用(BeginInvoke),除非线程池是饱和的,否则不应该真正阻塞异步调用(BeginInvoke)。
但这并不是唯一的模式。此外,最近(例如,Silverlight或WebClient中的异步IO方法):而不是使用IAsyncResult,而是使用事件来表示完成。
https://stackoverflow.com/questions/1418392
复制相似问题