C#5异步/等待线程机制感觉不对?

为什么调用线程会进入异步方法直到内部’await’?

一旦调用异步方法就产生一个线程不是更清晰。 这样你就可以确定async方法立即返回。 您不必担心在异步方法的早期阶段没有做任何昂贵的事情。

我倾向于想知道一个方法是否会在’my’线程上执行代码。 是否阻止。 这种模式似乎打开了一系列中间可能性。

设计师比我聪明得多,所以我确信有充分的理由,我只是想了解它。

一旦调用异步方法就产生一个线程不是更清晰。

“异步”方法的重点是避免产生新线程。

您将并发性与异步混淆。 异步方法不需要在另一个线程上运行就是异步的。 异步方法的关键在于它们允许您将工作分解为需要以特定顺序运行的小块,但不一定不在同一线程上执行其他工作

将线程视为您可以雇用的工人。 将异步方法视为待办事项列表,并在项目之间暂停。 如果您的待办事项清单上写着“去商店,买牛奶和鸡蛋,回家,做煎蛋”,那么异步的好处就是当有人在“购买鸡蛋”步骤和“去”之间拨打您的手机时家里“一步而且说”你可以在回家的路上经过药房来接我的药方吗?“ 制作煎蛋卷之前,您可以接听电话并安排工作。 使用非异步方法,您的手机会一直响铃,直到煎蛋卷完成,然后您接听电话。 用户界面阻止,直到你完成了你正在做的事情。

您的概念是,为了保持UI线程的响应性,当您获得待办事项列表时,您会雇佣一些人为您跑到商店,这样您就可以自由地接听有关药房的电话。 这是昂贵且不必要的。 所有东西都可以与异步保持在同一个线程上 ,因为长时间运行的任务具有内置点,UI可以在这些点中断并安排更多工作。

我喜欢将async..await视为继续传递样式编程的语法糖。

考虑到这一点,它与线程无关。

我倾向于想知道一个方法是否会在’my’线程上执行代码。

我认为这是一种特殊的愿望,对任何特征都不是一个好的论据。

async / await的要点是启动异步操作和处理结果的代码可以保存在一个方法中。

没有它,您将被迫将逻辑上属于的代码分解为两部分。