使用委托是异步调用方法是最佳做法吗?

时间:2011-07-26 00:12:10

标签: c# .net asynchronous delegates

This msdn article的标题是“如何异步调用Visual C#方法”

文章说“使用代理进行异步调用”,我在脑海中回答“不一定,这只是一种方法”。

文章陈述的实际情况使我感到奇怪 - 在进行异步调用时使用委托是最佳做法,还是MS认为这是最佳做法?

3 个答案:

答案 0 :(得分:5)

在当前的.NET版本中,异步方法通常在与您触发它们的单独后台线程中处理,因此使用您可以在另一个线程中调用的委托来执行它是非常必要的。

然而,使用最近的C#Async CTP(可能会在C#5.0或其他未来版本中),故事会有所改变 - 使用委托不是必需的,您可以用传统的命令式样式编写代码,并且编译器将为您完成大部分工作。这可能涉及委托,但不一定 - 编译器做了一些聪明的技巧并编写了一个可用于异步执行代码的有限状态机。

答案 1 :(得分:1)

是的,代表是通往call methods asynchronously的途径。这不是最佳实践,就是它如何完成。在.NET中,您必须使用委托。

答案 2 :(得分:0)

有人可以告诉我错误,但是我在编译时一直受到一个代表就像一个方法一样好,代表的目的是一个签名定义。我想到没有其他方法可以在没有方法的情况下执行异步代码,即使它的匿名在编译时成为一个方法..