C# 异步和等待特性的误导
C#是一种同步语言,即进程将阻塞UI,直到结果出现,现在麻烦就来了;这个带有wait的异步与同步看起来是一样的 异步+等待=同步C# 异步和等待特性的误导,c#,asp.net,asp.net-mvc,c#-5.0,asp.net-4.5,C#,Asp.net,Asp.net Mvc,C# 5.0,Asp.net 4.5,C#是一种同步语言,即进程将阻塞UI,直到结果出现,现在麻烦就来了;这个带有wait的异步与同步看起来是一样的 异步+等待=同步 我知道调用者继续前进,即主线程被释放。通过使用异步编程,您可以避免性能瓶颈并增强应用程序的整体响应能力 然而,编写异步应用程序的传统技术可能很复杂,使它们难以编写、调试和维护 Visual Studio 2012引入了一种简化的方法,即异步编程,它利用了.NET Framework 4.5和Windows运行时中的异步支持 编译器完成了开发人员过去所做的困难工作,而您
我知道调用者继续前进,即主线程被释放。通过使用异步编程,您可以避免性能瓶颈并增强应用程序的整体响应能力 然而,编写异步应用程序的传统技术可能很复杂,使它们难以编写、调试和维护 Visual Studio 2012引入了一种简化的方法,即异步编程,它利用了.NET Framework 4.5和Windows运行时中的异步支持 编译器完成了开发人员过去所做的困难工作,而您的应用程序保留了类似于同步代码的逻辑结构。因此,您只需付出一小部分努力就可以获得异步编程的所有优势 MSDN文档 C#是一种同步语言,即进程将阻塞UI,直到结果出现 1) C#与UI无关。UI作为一个框架实现,语言不可知 2) 仅算桌面,至少有2个UI框架,没有“UI” 3) 您是对的,2个现成的框架具有线程亲和力,并且有一个主消息泵。(顺便说一句,没有什么可以阻止你做你想做的事情,只是你在每个控件中创建的控件必须在这个控件上被独占访问,称为“序列化”,这是一个众所周知的多道程序设计模式 现在回到标题中的主要主题 很明显,您了解异步/等待是如何工作的。您对异步的误解是什么 请注意:当您使用async/await时,它不会阻塞线程。在异步执行完成后,这是代码流中的继续。如果它将被实现为完成处理程序或回调,每个人都会看到它是什么。现在它被写为代码的下一行。我承认它可能会误导一个线程,但它更简单不必编写(内联)完成处理程序,特别是如果一行中有5个异步操作,那么必须将完成嵌套在4个级别。这是C#编译器使用async/await为您生成的,并允许您逐行编写代码 不管怎样,就像你写的那样 我确实理解调用方继续,即主线程被释放
所以它是异步的。那么你的问题是什么?请学习异步的基础知识,等待这些不是同步的检查:你是对的,它释放了线程,但这并不意味着它与同步相同。等待的任务稍后将执行。如果它是同步的,它将停止,直到任务执行为止。不,先生,你是c如果将返回结果的方法也标记为任务,请阅读发布的所需文档,以了解async和Wait的机制和用法。