使用"同步功能"是否有理由或好处?例如,当我们可以使用异步版本(executenonqueryasync)+" await"这样的ExecuteNonquery时关键字是为了执行并等待响应?
换句话说,使用" executenonqueryasync"是否有缺点? function + await命令而不是使用旧的" executenonquery"在表现或其他方面的功能?
答案 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
更容易处理。