C#基础——同步异步、预处理指令
2023-12-22 18:39:37
同步异步、预处理指令
async和await 同步异步
- async:
async
关键字用于定义异步方法,表示这个方法可能会执行异步操作。异步方法使用async
关键字修饰,以便在方法中使用await
。 - await:
await
关键字用于等待异步操作的完成,并使得异步方法在遇到await
时暂停执行,直到等待的操作完成。
static void Main(string[] args) {
ProgramMothod1(); //异步 + 分线程
Console.WriteLine("同步上码执行完,才会执行下面的代码");
}
//async:异步方法修饰符,默认没有添加该修饰符的方法就属于同步方法
public async static void ProgramMothod1() {
Console.WriteLine("开始执行ProgramMothod1");
//注意:如果是添加了async修饰,那么在方法内是需要实现await修饰的
//await的意思等待操作完毕,遇到比较耗时的任务可以用await来修饰
await ProgramMothod1_2();
ProgramMothod2();
Console.WriteLine("结束执行ProgramMothod1");
}
public static Task ProgramMothod1_2() {
//拟定一个耗时的任务。
Task task = Task.Run(() => {
for (int i = 0; i < 10; i++) {
Console.WriteLine(i + "ProgramMothod1_2");
Thread.Sleep(500);
}
});
return task;
}
public static void ProgramMothod2() {
for (int i = 0; i < 10; i++) {
Console.WriteLine(i + ">>>>>>ProgramMothod2");
Thread.Sleep(500);
}
Console.WriteLine(">>>>>>ProgramMothod2");
}
注意:
1.async必须是修饰方法才可以,表示异步方法
2.async必须与await一起使用
3.async描述的方法必须返回值是void或Task以及Task
4.await的描述也是针对方法,但是必须内部使用task或者是Task
5.await修饰的方法刚开始的时候其实是同步的,直到遇到关键字await才开始异步
预处理指令
预处理器指令:编辑器一般都是在实际编辑的时候才会对代码进行预处理,可以理解为添加了一些标识,让编辑器在编辑的时候提前"预热,挑选"一部分代码执行。
预处理器的用途:
1、利于项目的调试和运行,例如代码很多都是调试时候执行的,发布的时候不需要执行
2、代码调试阶段,可以使用错误或者是警告来禁止编辑不属于本功能之外的代码
3、折叠不需要的代码,让开发者能够更加关心核心代码的处理,
//制定了一个预处理模块
#define condition //开启指令,预处理一般以#开头 condition 用来描述自己的需求
//define表示这部分需求将来可以变更
//#undef condition //关闭,取消
using System;
namespace _3_预处理指令 {
internal class Program {
static void Main(string[] args) {
/*
#if:打开编辑器:其中仅在定义了制定的修饰符才会执行。
#else:关闭前面条件,如果没有定义修饰符,会打开一个新的
#endif:关闭条件编辑
*/
#if DEBUG
Console.WriteLine("Debug version");// 在Debug的时候生效
#endif
#if (condition)
Console.WriteLine("这是自定义的部分");
#elif (condition2)
Console.WriteLine("这是自定义的部分2");
#else
Console.WriteLine("condition is not defined");
#endif
Console.ReadLine();
}
}
}
文章来源:https://blog.csdn.net/qq_51810680/article/details/135158748
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!