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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。