• C# 异步多线程


    多线程的概念和应用

    /// <summary>
    /// 1.进程和线程的特点
    /// 2.委托启用多线程
    /// 3.多线程的特点:不卡主线程,速度快无秩序
    /// 4.异步的回调和状态参数
    /// 5.异步等待的三种方式
    /// 6.异步的返回值
    /// 
    /// 进程 和线程的 是计算机概念
    /// 进程:运行时 占用全部计算资源的总和
    /// 线程:程序执行流的最小单位;任何操作都是由线程完成的;
    ///       线程是依托进程存在的,一个进可以包括多个线程;
    ///       线程也可以有自己的计算资源
    /// 多线程:多个执行流同事运行
    ///         1.CPU 太快了,分时间片--上线文切换(架子环境 -- 计算 -- 保存环境)
    ///           微观视角,一个核同一时刻只能执行一个线程;
    ///           宏观视角,多线程并发
    ///         2:多核(多CPU),可以独立工作
    ///            四核八线程 --- 核是物理核,线程是虚拟核
    ///            
    /// Thread 是C# 语言对线程的封装
    /// 
    /// 同步 :完成计算后,再进入下一行
    /// 异步 :不会等待方法的完成,会直接进入下一行
    /// 
    /// 1、同步方法卡界面,主线程忙于计算
    ///    异步多线程方法不卡界面,主线程完了,计算任务交给子线程去做
    ///    winform 提升用户体验;web 一个业务操作后要发邮件,异步发送邮件
    /// 2、同步方法慢,只有一个线程干活
    ///    异步多线程方法快,因为多线程并发运算;
    ///    便是不是线程越多越好,并非线程增长,a资源换时间   多线程也有时间管理成本
    /// 3.异步多线程 的应用
    ///    1)多个独立任务同时运行;
    /// 4.异步多线程无序,启动无序,结束无序,执行时间不确定
    /// </summary>
    View Code

    异步操作方式

    IAsyncResult async = null; //异步操作的状态
    Action<string> action = this.Calc; //创建实例
    AsyncCallback callback = _ia =>
    {
        Console.WriteLine(_ia == async);//判断 callback 的 参数 IAsyncResult 和 委托异步操作的实例是否是一个;Result 是一个
        Console.WriteLine(_ia.AsyncState);//调用异步状态 “wuyc”
        Console.WriteLine("已经结束");
    };
    async = action.BeginInvoke("Show1_", callback, "wuyc");//异步调用
    action.EndInvoke(async);//使 async 异步调用 完成的时候才能继续往下执行
    异步操作
  • 相关阅读:
    c#RSA的SHA1加密与AES加密、解密
    c#后台代码请求访问api接口
    Hbuilder给手机发送短信与拨打电话
    Hbuilder获取手机当前地理位置的天气
    plus.webview.create( url, id, styles, extras )参数及说明
    九九乘法表+冒泡排序(校园回忆录)
    c#数据处理总结(分组、交并差与递归)
    Hbuilder MUI 下拉选择与时间选择器
    JAVA常用开源工具与项目
    mysql 中常用功能
  • 原文地址:https://www.cnblogs.com/Jacob-Wu/p/9501379.html
Copyright © 2020-2023  润新知