为什么Microsoft开发了异步功能而不是改变常规功能

时间:2014-12-22 21:11:32

标签: c# .net c#-5.0

使用"同步功能"是否有理由或好处?例如,当我们可以使用异步版本(executenonqueryasync)+" await"这样的ExecuteNonquery时关键字是为了执行并等待响应?

换句话说,使用" executenonqueryasync"是否有缺点? function + await命令而不是使用旧的" executenonquery"在表现或其他方面的功能?

1 个答案:

答案 0 :(得分:4)

你不能await标准方法 - 你只能await一个Task(或GetAwaiter的任何东西),这意味着必须将新方法写入适合新的模式。

至于不改变旧方法或只是在每个长方法调用之前推荐await Task.Yield()模式,请注意.NET框架中有很多的代码段( each and every method overload taking Evidence in AppDomain)处理旧程序 - 就像任何好的执行平台一样,.NET非常关注保留遗留支持。如果使用.NET的每个人都担心每两个月需要重新编译一次,因为MS改变了一些东西,他们就不会继续使用.NET。

不改变现有方法的另一个好理由是,每次都不能一直使用该模式。有许多地方需要严格控制线程(UI框架包括WPF,AutoCAD插件)以防止异常包含代码 - 避免async / await更容易处理。