C#基础——同步异步、预处理指令

同步异步、预处理指令

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();}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/239684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Centos系统升级gcc版本

自己环境的gcc版本太低&#xff0c;影响使用SAN全家桶进行内存泄露检查 当前环境gcc版本查看 gcc --version 进行升级&#xff1a; 1、安装EPEL存储库 yum install epel-release -y 2、确保系统已经更新到最新版本 yum update -y 3、安装GCC编译器及其相关工具包 yum g…

让生活更智能,P1600边缘智能网关带你进入智能家居新时代

一、什么是P1600边缘智能网关&#xff1f; 在科技日新月异的今天&#xff0c;我们的生活已经被各种智能产品所包围。而在这个智能化的浪潮中&#xff0c;P1600边缘智能网关以其独特的优势&#xff0c;成为了智能家居的重要组成部分。那么&#xff0c;什么是P1600边缘智能网关呢…

Debezium发布历史22

原文地址&#xff1a; https://debezium.io/blog/2017/11/11/debezium-at-devoxx-belgium/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. Debezium 在 Devoxx 比利时 十一月 11, 2017 作者&#xff1a; Jiri P…

在 Laravel 中,清空缓存

在 Laravel 中&#xff0c;清空缓存通常涉及到清除应用程序中的缓存文件和数据库查询缓存。以下是一些常用的清空缓存方法&#xff1a; 1. 清除路由缓存&#xff1a; Laravel 的路由缓存可以提高应用程序的性能&#xff0c;但在开发过程中&#xff0c;你可能需要频繁地更改路…

Elasticsearch Reroute API 的使用

本文通过一个 Elasticsearch 集群中主分片分配不均衡的例子演示一下 Cluster reroute API 的使用。 对于 Elasticsearch 分片分配策略不了解的同学可以点一下关注&#xff0c;后面更文之后获取第一手资料。 环境信息 Windows 10 Elasticsearch 8.1 JDK17 初始集群状态 分片…

嵌入式系统与物联网:智能化、互联世界的构建者

随着科技的飞速发展&#xff0c;我们的生活、工作以及整个社会结构都经历着深刻的变革。在这个过程中&#xff0c;嵌入式系统和物联网&#xff08;IoT&#xff09;技术扮演了关键的角色。本文将探讨嵌入式系统如何与物联网相互作用&#xff0c;以及它们在构建智能化、互联的世界…

SVM —— 代码实现

SMO 算法的实现步骤&#xff1a; 代码如下&#xff1a; import numpy as np import matplotlib.pyplot as plt import seaborn as sns import random# 设置中文字体为宋体&#xff0c;英文字体为 times new roman sns.set(font"SimSun", style"ticks", fo…

Vue.js 教程

Vue.js&#xff08;读音 /vjuː/, 类似于 view&#xff09; 是一套构建用户界面的渐进式框架。 Vue 只关注视图层&#xff0c; 采用自底向上增量开发的设计。 Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 阅读本教程前&#xff0c;您需要了解的…

利用MultCloud在线复制传输不同网盘之间的数据:支持谷歌Drive、百度网盘等

本文介绍通过MultCloud平台&#xff0c;在国内实现谷歌Drive、OneDrive、百度网盘等不同云盘之间数据的传输、共享等操作的免费方法。 有的时候&#xff0c;我们希望对自己不同网盘之间的数据加以传输、共享&#xff1b;例如&#xff0c;我们可以将自己谷歌Drive中的数据&#…

贪心法之活动安排问题

问题: 给定n个活动&#xff0c;每个活动有一个开始时间si和结束时间fi&#xff0c;选择出最大的互不相容的活动 集合。 思路&#xff1a; 将所有活动按照结束时间从小到大排序。 选择第一个活动&#xff0c;并将其加入最终的选择集合中。 依次考虑剩余的活动&#x…

K8S学习指南(35)-k8s权限管理模型webhook

文章目录 引言Webhook基本概念1. Webhook2. Admission Controller Webhook核心组件1. Admission Controller配置2. Admission Controller配置文件 Webhook的使用方法1. 创建Webhook服务2. 注册Webhook3. 验证Webhook生效 Webhook示例演示步骤一&#xff1a;创建Webhook服务步骤…

前端面试题(计算机网络):HTTP 1.0 和 HTTP 1.1 之间有哪些区别?

HTTP 1.0 和 HTTP 1.1 之间有哪些区别&#xff1f; 回答思路&#xff1a;记住HTTP1.1是HTTP1.0的plus&#xff08;升级版&#xff09;,直接讲1.1比1.0怎么好怎么好了,连接方面-->请求资源方面-->缓存方面-->新增字段-->新增请求方法连接方面请求资源方面新增字段新…

antdesignpro实现滚动加载分页数据

原理解析&#xff1a;每滚动一次相当于翻页&#xff0c;请求后端时给的页码参数要想办法加1&#xff0c;后端才能根据页码给出相应数据 注意后端收到页码参数之后要准确计算出每页的首行数据&#xff0c;关键逻辑代码&#xff1a; # 根据前端传的页码&#xff0c;进行计算下一…

芯片到底是怎么访问外设

微型计算机的组成&#xff1a;CPURAM硬盘等 什么是FLASH&#xff1f; FLASH存储器又称闪存&#xff0c;它结合了ROM和RAM的长处&#xff0c;不仅具备电子可擦除可编程&#xff08;EEPROM&#xff09;的性能&#xff0c;还不会断电丢失数据同时可以快速读取数据&#xff08;NV…

MACBOOK 通过iterm2连接堡垒机跳转服务器

本公司是通过齐治堡垒机连接远程服务器的环境&#xff0c;因为连接过程中需要自动输入密码和选择主机&#xff0c;所以要使用expect工具&#xff0c;编写expect脚本remote.exp #!/usr/bin/expectif { $argc ! 7 } {send_user "usage: expect $argv0 \[JUMP_HOST\] \[JUM…

spring基于Xml管理bean---Ioc依赖注入:对象类型属性赋值(1)----外部bean的引入(bean和bean之间的引入)

文章目录 注入普通属性的方式1、set方法注入2、构造器&#xff08;构造方法&#xff09;注入 总结&#xff1a;注入对象类型属性 注入普通属性的方式 1、set方法注入 2、构造器&#xff08;构造方法&#xff09;注入 总结&#xff1a; set方法注入和构造器方法的注入&#…

java并发编程八 CAS 与 volatile和原子整数与原子引用

文章目录 CAS 与 volatile慢动作分析volatile为什么无锁效率高CAS 的特点 原子整数原子引用不安全实现安全实现-使用锁安全实现-使用 CAS CAS 与 volatile 在java并发编程七六中&#xff0c;可以看到的 AtomicInteger 的解决方法&#xff0c;内部并没有用锁来保护共享变量的线…

Ubuntu 22.04.3 Server通过修改yaml配置文件方法设置静态IP

目录 1.查看网卡信息 2.修改yaml配置文件 3.应用新的网络配置 4.重新启动网络服务 文章内容 本文介绍Ubuntu 22.04.3 Server系统通过修改yaml配置文件配置静态 ip 的方法。 1.查看网卡信息 使用ifconfig命令查看网卡信息获取网卡名称​ 如果出现Command ifconfig not fo…

Starknet 命令行工具之Starkli | 使用Starkli部署合约

文章目录 Starknet 命令行工具之Starkli | 使用Starkli部署合约一、什么是Starkli二、安装Starkli三、使用Starkli部署合约1. 生成账号,部署账号1. 准备一个存放钱包的目录2. 生成签名者(signer)3. 创建帐户描述关于providers rpc2. declare合约3. 部署合约4. 去区块链浏览器…

3.[BUUCTF HCTF 2018]WarmUp1

1.看题目提示分析题目内容 盲猜一波~ &#xff1a; 是关于PHP代码审计的 2.打开链接&#xff0c;分析题目 给你提示了我们访问source.php来看一下 大boss出现&#xff0c;开始详细手撕~ 3.手撕PHP代码&#xff08;代码审计&#xff09; 本人是小白&#xff0c;所以第一步&…