C# 异步方法理解

我自己对于异步方法的理解,着重于对于各个线程是怎么调度的理解,关于具体代码编写方面和细节讲述是没有的,以下内容如有错误,还请指正。

假设有两个命令调用,命令一和命令二,它们都在主线程。

假设有六个方法。方法一、二、三、四、六都是普通方法,且内部只有一个普通代码语句。方法五是异步方法,其内部有三个代码语句,语句一、三都是普通语句,语句二是带有await标识符的特殊语句,因为它是个耗时操作。

命令一对应方法一、二、三    ,  命令二对应方法四、五、六。

命令一启动:

              主线程

运行方法一中的语句一

运行方法二中的语句一

运行方法三中的语句一

执行结束

这是普通方法的运行规律,简单易懂。

命令二启动:

           主线程                                                                                                                             新开辟的线程

运行方法四中的语句一

运行方法五中的语句一

运行方法五中的语句二 ,将方法五在主线程挂起,    -------------------->   在新开辟的线程中运行语句二所代表的耗时操作

不再执行方法五内语句二之后的代码                                                                                                |

                                                                                                                                                         |

运行方法六中的语句一                                                                                                                     |

          |           等                                                                                                                               |          等 

          |                                                                                                                                              |

          |                                                                                                                                              |

          |                                                                                                                                              |

          |                                                                                                                                              |

          |                                                                                                                                              |

          |          待                                                                                                                                 |          待 

运行方法五中的语句三               <--------------------     方法五的语句二运行结束,重新恢复主线程中方法五的语句三的运行。

执行结束

总之,根据我自己的粗略测试,执行过程的确如此,如有错误,敬请指正。

猜你喜欢

转载自blog.csdn.net/qq_37760273/article/details/114630952
今日推荐