首页 > 编程语言 >C#异步与多线程

C#异步与多线程

时间:2024-05-13 16:19:12浏览次数:22  
标签:异步 Console 这里 C# 信息 WriteLine 多线程

c#的异步与多线程

异步与多线程

首先,异步是相对于同步的一个概念,在同步环境下,程序允许至某处需要等待的位置,会发生阻塞,直到达到条件才会继续向下运行;而异步操作则可以在需要等待的位置,跳过等待,执行其他内容,通常异步处理的事务不能相互存在影响。
多线程指的是,同时使用多个线程执行多个不同的代码块,这样做能够充分利用cpu的性能,从而有效提升程序的性能。
通常来说,多线程是实现异步的一种手段,但并不意味着异步一定会使用多线程操作。

await/async

在c#中,要实现异步操作,离不开这两个关键字,通常他们都是搭配使用,极少出现单独使用的情况。
下面举例说明其用法:

C#

public void main()
{
    ShowMsgAsync();
    ShowMsg();
}

public async void ShowMsgAsync()
{
    Console.WriteLine("这里是信息1");
  await Task.Run(() =>{
    Thread.Sleep(500);
    Console.WriteLine("这里是信息2");});
    Thread.Sleep(400);
    Console.WriteLine("这里是信息3");
}

public void ShowMsg()
{
    Console.WriteLine("这里是信息4");
    Thread.Sleep(1000);
  Console.WriteLine("这里是信息5");
}

这里大家可以想一下输出结果是什么:

// 这里是信息1
// 这里是信息4
// 这里是信息2
// 这里是信息3
// 这里是信息5

下面我们一起分析一下程序执行过程:

1.主方法调用ShowMsgAsync方法,输出“这里是信息1”。
2.运行至await关键字处,当前方法被阻塞,并在子线程中执行其中的逻辑;主线程并未阻塞,继续向下执行,调用ShowMsg方法,输出"这里是信息4"。
3.子线程中运行完毕,输出"这里是信息2","这里是信息3"。
4.主线程输出"这里是信息5"。

标签:异步,Console,这里,C#,信息,WriteLine,多线程
From: https://www.cnblogs.com/hardworkingR/p/18189462

相关文章

  • 一键自动化博客发布工具,用过的人都说好(csdn篇)
    CSDN应该是大家接触到最多的博客平台了,所以一款能够发布到CSDN的自动化工具还是非常有必要的。今天给大家讲讲自动化CSDN博客发布的思路和一些问题的解决办法。解决问题的思路一定是最重要的,知识是死的,问题是活的,如何在工作中解决遇到的问题是我们需要面临的大问题。前提条件......
  • 错误解决Server Tomcat v7.0 Server at localhost was unable to start within 45 sec
    问题:ServerTomcatv7.0Serveratlocalhostwasunabletostartwithin45seconds.Iftheserverrequiresmoretime,tryincreasingthetimeoutintheservereditor.今天运行tomcat项目,发现报错信息如下图原因:45s内无法启动改项目,没有其他错误信息,尝试延长启动......
  • Docker下搭建gitlab
    docker安装流程获取gitlab(社区版)--已有镜像时,可跳过此步dockerpullgitlab/gitlab-ce:latest创建本地卷用于保存gitlab数据e:\dockerdata\config\logs\data运行dockerrun--detach--hostnamexxxx.com--publish443:443--publi......
  • 使用 Docker 部署 WebTop 运行 Linux 系统
    1)项目介绍GitHub:https://github.com/linuxserver/docker-webtopWebTop它是一个基于Linux(Ubuntu和Alpine两种版本)的轻量级容器,具有在浏览器中运行的完整桌面环境,具有基本的窗口管理器、像素完美的渲染分辨率、音频支持、剪贴板支持、屏幕键盘支持,以及用于上传/下载的远程......
  • react native 项目使用 Xcode 打包上架 App Store
    一、创建证书、标识符和描述文件等:1.前提条件可正常运行和打包的代码、Apple开发者账号点击注册Apple开发者账号注册完进入页面可以看到证书、标识符和描述文件创建入口2.创建AppID点击Identifiers旁边的加号选择AppIDs,点击Continue。选择App,点击Conti......
  • KBPC2510-ASEMI开关电源整流方桥KBPC2510
    编辑:llKBPC2510-ASEMI开关电源整流方桥KBPC2510型号:GBU810品牌:ASEMI封装:KBPC-4正向电流(Id):25A反向耐压(VRRM):1000V正向浪涌电流:300A正向电压(VF):1.00V引脚数量:4芯片个数:4芯片尺寸:88MIL功率(Pd):中小功率设备工作温度:-55°C~150°C类型:整流桥、插件整流桥KBPC2510整流桥描......
  • mybatis多线程插入数据表已经事务回滚
    importlombok.extern.slf4j.Slf4j;importorg.apache.commons.collections4.CollectionUtils;importorg.apache.commons.collections4.ListUtils;importorg.apache.ibatis.session.ExecutorType;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibati......
  • Ubuntu环境下,安装中望CAD Linux 2024
    安装Ubuntu20.04(略)下载中望CADLinux2024https://www.zwsoft.cn/product/zwcad/linux安装中望CADLinux2024在安装包路径下打开终端,执行命令:sudodpkg-izwcad2024_24.1.3.4_amd64.deb在应用中心找到中望CAD,双击打开......
  • 虚拟机VMware安装统信UOS,再安装中望CAD
    下载并安装VMware虚拟机。下载统信UOS。https://www.chinauos.com/resource/download-professional统信UOS桌面专业版AMD64(1070版本)支持:Intel、AMD、兆芯、海光工作站还可以考虑社区版:https://www.uniontech.com/next/product/desktop-system?edition=CommunityVMwa......
  • DS Record
    八云蓝自动机Ⅰ首先我们对于操作\(1\)转换,我们给\(k\)单独再开一个点\(a_c\),这样我们就可以把操作\(1\)转换成操作\(2\)了。对于区间问题,我们考虑使用莫队进行维护。我们记录当前\(a\)的值,\(pos_i\)表示原来第\(i\)个位置的数现在在哪里,\(rev_i\)维护现在第\(......