• C# async/await 异步编程


    参考地址:

    总结的说一下

    • async 是用来修饰异步方法,await 是用来异步执行方法
    • async/await 要同时使用,否则会当做同步方法
    • 这个与Thread线程池的区别在于,Thread 是会不断的创建,销毁,而Task.Run()每次执行将不会立即创建一个新线程,而是到CLR线程池查看是 否有空闲的线程,有的话就取一个线程处理这个请求,处理完请求后再把线程放回线程池,这个线程也不会立即撤销,而是设置为空闲状态,可供线程池再次调度, 从而减少开销。

    栗子

    具体的详情请看 参考链接,这边只是提供一下如何使用

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Web;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace TestApp
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("-------主线程启动-------");
                Task<int> task = GetLengthAsync();
                Console.WriteLine("Main方法做其他事情");
                Console.WriteLine("Task返回的值" + task.Result);
                Console.WriteLine("-------主线程结束-------");
            }
    
            static Task<int> GetLengthAsync()
            {
                Console.WriteLine("GetLengthAsync Start");
                Task<int> task = Task<int>.Run(() => { string str = GetStringAsync().Result; 
                    Console.WriteLine("GetLengthAsync End"); 
                    return str.Length; });           
                return task;
            }
    
            static Task<string> GetStringAsync()
            {
                return Task<string>.Run(() => { Thread.Sleep(2000); return "finished"; });
            }
        }
    }
    
  • 相关阅读:
    window.open 打开全屏窗口
    H5实现全屏与F11全屏
    泛型 总结
    java 反射
    静态工厂模式
    设计模式---单例模式
    String、List、array相互转换
    将数组转换成list
    将对象转换成json字符串的几种方式
    在map中放入数据时,如果key相同,会替换掉之前的相同key的数据
  • 原文地址:https://www.cnblogs.com/Alex-Mercer/p/12661091.html
Copyright © 2020-2023  润新知