首页 > 其他分享 > public async void Start(){ await 函数 } 相当于是同步方法吗?

public async void Start(){ await 函数 } 相当于是同步方法吗?

时间:2023-08-25 10:05:51浏览次数:26  
标签:异步 void await Start 操作 async 方法

在 C# 中,使用 `async` 和 `await` 关键字可以创建异步方法。异步方法不会阻塞当前线程,允许程序在等待耗时操作的同时继续执行其他任务。在你的代码中,`public async void Start()` 是一个异步方法的声明。


然而,与同步方法不同,`await` 关键字会将控制权返回给调用方,允许其他操作继续执行,直到被 `await` 的异步操作完成。因此,虽然 `Start` 方法是异步声明,但它本身并不会阻塞程序的执行,而是在遇到 `await` 处将执行流程挂起,等待 `await` 后面的异步操作完成。


所以,`public async void Start()` 并不等同于同步方法,因为它的执行过程在遇到 `await` 处会暂停,允许其他任务继续执行。如果你希望在异步方法内等待异步操作完成,并在其完成后执行后续操作,你需要在适当的地方使用 `await` 关键字。这就是异步方法的主要优势之一:在等待 I/O 操作或其他耗时操作时,它们不会阻塞 UI 或其他关键任务。

标签:异步,void,await,Start,操作,async,方法
From: https://blog.51cto.com/u_15825922/7226296

相关文章

  • c语言 指针的大小,void *
    @TOC前言变量有大小,同样指针也有它的大小。一、指针的大小:(一切指针都是如此)不同编译环境下,指针的大小不一样:32位编译环境下,是4字节64位编译环境下,是8字节二、指针的大小的演示:三、void*类型:通用指针类型:void*通用指针类型就是没有值具体类型,什么指针都可以装。例如:inta......
  • spring-boot-starter
    springboot在配置上相比spring要简单很多,其核心在于spring-boot-starter,在使用springboot来搭建一个项目时,只需要引入官方提供的starter,就可以直接使用,免去了各种配置。starter简单来讲就是引入了一些相关依赖和一些初始化的配置命名规范:官方的starter:spring-boot-start......
  • 【未解决】就是await 无法真正阻塞成功的问题
    1、我这样await的话,会没有等到queryEnv执行完,就直接返回了responseexportletload=asyncfunction(data){letresponse=awaitqueryEnv(url,uidJson).data; returnresponse;}asyncfunctionqueryEnv(url,uid){ varresponse=await$.ajax({ type:......
  • a start job is running for udev wait for complete device initialization
    astartjobisrunningforudevwaitforcompletedeviceinitializationreference:https://github.com/AdnanHodzic/displaylink-debian/issues/331diff/etc/init.d/systemd-udevd+systemctlmasksystemd-udev-settleudevadmtrigger--action=addudevadmsett......
  • async/await
    async/await是同步语法,能以不使用回调函数的方式来实现异步。await被async包裹,await后面可以追加Promise对象,也可以追加async函数。执行async函数,返回的是一个Promise对象。如果直接返回一个值,那么会把这个值封装成一个Promise对象。await相当于Promise的then。 优点:1.方便......
  • Springboot-starter
    1.Spring手动注入和自动注入通常情况下,系统中类和类之间是有依赖关系的,如果一个类对外提供的功能需要通过调用其他类的方法来实现的时候,说明这两个类之间存在依赖关系。example:publicclassUserService{publicvoidinsert(UserModelmodel){//插入用户信息......
  • ffpyplayer源码编译报错:ffpyplayer/tools.pyx:182:28: Cannot assign type 'void (*)(
    编译ffpyplayer报错,具体错误如标题。  报错信息:ffpyplayer/tools.pyx:182:28:Cannotassigntype'void(*)(void*,int,constchar*,va_list)except*nogil'to'void(*)(void*,int,constchar*,va_list)noexceptnogil'  解决方法:pipinstallblos......
  • 如何解决docker 一直转圈圈而不start
    今天在进行启动docker的时候出现了一直转圈圈而不能启动的问题我的电脑是windows10,解决步骤是:首先右击右下角任务栏中的小图标docker,有个Switchtowindowscontainers选择后,打开WindowsPowerShell以管理员的身份运行然后输入Enable-WindowsOptionalFeature-Online-Feat......
  • linux之shell脚本quickStart
    这篇文章主要参考于《跟老男孩学linux运维:Shell编程实战》,方便写shell脚本时参考,只列一些shell脚本中的容易混淆的知识点。目录1变量1.1普通变量1.2shell特殊变量1.3shell特殊扩展变量2运算符2.1空格2.2(())与[]2.3||与&&3常用命令3.1read3.2echo3.3eval3.4双......
  • await this.$nextTick()和this.$nextTick(callback)有什么区别?记一次bug调试
    背景需要实现一个需求,一个小区业务详情页面,在左侧菜单栏切换了小区后,详情页跟着切换。这个详情页面是根据url上的/:id来确定小区id的,所以切换了小区后,应该切换路由。于是这样实现:watch:{//监听小区号变化neighNo(newVal){if(newVal){//切换路......