Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么Microsoft开发异步函数而不是更改常规函数_C#_.net_C# 5.0 - Fatal编程技术网

C# 为什么Microsoft开发异步函数而不是更改常规函数

C# 为什么Microsoft开发异步函数而不是更改常规函数,c#,.net,c#-5.0,C#,.net,C# 5.0,例如,当我们可以使用异步版本ExecuteOnQueryAsync+wait关键字来执行和等待响应时,使用诸如ExecuteOnQuery之类的同步函数有什么原因或好处 换句话说,在性能或其他方面,使用ExecuteOnQueryAsync函数+Wait命令而不是使用旧的ExecuteOnQuery函数是否有缺点?您不能等待标准方法-您只能使用GetWaiter等待任务或任何东西,这意味着必须编写新的方法来适应新的模式 至于不改变旧的方法或者只是推荐一种等待任务的模式。在每次长的方法调用之前,请

例如,当我们可以使用异步版本ExecuteOnQueryAsync+wait关键字来执行和等待响应时,使用诸如ExecuteOnQuery之类的同步函数有什么原因或好处

换句话说,在性能或其他方面,使用ExecuteOnQueryAsync函数+Wait命令而不是使用旧的ExecuteOnQuery函数是否有缺点?

您不能等待标准方法-您只能使用GetWaiter等待任务或任何东西,这意味着必须编写新的方法来适应新的模式

至于不改变旧的方法或者只是推荐一种等待任务的模式。在每次长的方法调用之前,请注意,.NET framework中有大量的去擦洗的代码片段来处理旧的程序-就像任何好的执行平台一样,.NET非常关心保留遗留支持。如果每个使用.NET的人都不得不担心需要每隔几个月重新编译一次,因为微软改变了一些东西,那么他们就不会继续使用.NET了


不改变现有方法的另一个很好的理由是模式不能一直使用,每次都使用。在很多地方,线程需要严格控制UI框架,包括WPF、AutoCAD插件,以防止异常对代码造成干扰-通过避免async/await,这更容易处理。

这样所有现有的数百万行代码都不会中断?您不能总是使用async。而且不适合在任何地方使用它。它应该在需要的时候使用。为什么我不能总是使用async函数和Wait关键字来代替常规的非异步函数呢?那么你的意思是,你认为微软应该让每个人都更新他们的.NET 4.5代码,而不是让现有代码做同样的事情,而是提供了一个异步替代方案。有时,同步方法确实是最简单的解决方案。我根本不懂你说的,但听起来你仍然认为他们应该破坏每个人的代码,迫使每个人要么使用wait,要么更改他们调用的方法。那不是个好主意。向后兼容性非常重要。好吧,您只能等待提供适当的GetAwaiter方法和适当的返回类型的东西。等待是基于模式的。非常正确!我将把它集成到我的答案中。@Aravol,为什么我们要使用wait with Async函数,而不是Microsoft可能会更改的常规函数,以像Async那样释放线程?这就是问题所在…@Omtechguy查看最后一段-释放线程意味着它必须返回或操作新线程,这在某些情况下是不可接受的。谢谢!!!现在我明白了!