欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > C# 中await和async的用法(一)

C# 中await和async的用法(一)

2025/5/6 20:31:20 来源:https://blog.csdn.net/qq_42880092/article/details/145015671  浏览:    关键词:C# 中await和async的用法(一)

在 C# 中,await 关键字用于异步编程,配合 async 方法一起使用。await 允许你等待异步操作完成,而不会阻塞当前线程。简而言之,await 会暂停当前方法的执行,直到任务完成,然后继续执行。

1. await与async的关系

asyncasync关键字是一个函数修饰符,用于表示这个方法是一个异步方法,但并不绝对。

Async方法在执行的时候,开始是以同步的方式执行(即在调用方的thread里跑的),直到遇到await关键字,从await关键字开始,C#会另起一个thread来执行await后面的代码。

C#新起的这个thread,会等待await的方法执行,在执行结束前,一直处于阻塞状态。

而调用方的thread(一般是主线程)会继续运行,可以处理UI等操作。

如果Async方法里面的代码没有包含await的代码会怎么样?

那整个函数就会同步执行,跟普通函数没差别。编译器只会给你个警告。

当一个方法被标记为async时,它返回一个Task对象,而不是直接返回结果。

举例:

        private async Task<bool> Fun1()
        {
            int num = 2;
            await FunSub(num); // 使用异步方法代替阻塞方法
            return true;
        }

在上面的例子中,在async异步函数里,搭配await使用,实现异步功能。

如果没有await指令,这个异步函数将以同步方式运行,不会自动新建线程。

await:await关键字是一个方法修饰符,用于在一个函数内部等待一个Task或async方法完成。

await 后面的方法不能是同步方法,否则会报错。

当在async方法中使用await时,它会暂停当前方法的执行,直到等待的Task完成。

一旦Task完成,这个async方法才会继续执行后续的代码。

当async方法暂停期间,由于和主线程是独立的,只是这个子线程在等待,主线程继续执行,该干啥干啥。

举例:

        private async Task<bool> FunSub(int Num)
        {
            await Task.Delay(Num); // 使用异步方法代替阻塞方法
            return true;
        }

在这个异步方法中,只有当Task延时设定的时间后,才会执行return指令。

2. 异步方法的使用场景

针对比较耗时的操作,通过异步方法可以提高程序的响应性和性能,提高操作的流畅性。

尤其适用于处理IO密集型操作场景,主要是这三类:

a:网络请求

b:文件读写

c:数据库大量数据的交互

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词