同步异步、预处理指令
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 DEBUGConsole.WriteLine("Debug version");// 在Debug的时候生效
#endif#if (condition)Console.WriteLine("这是自定义的部分");
#elif (condition2)Console.WriteLine("这是自定义的部分2");
#elseConsole.WriteLine("condition is not defined");
#endifConsole.ReadLine();}}
}