• async await


    顺序执行

    class Program
    {
    static void Main(string[] args)
    {
    new MyClass();
    Console.Read();
    }
    }
    public class MyClass
    {
    public MyClass()
    {
    Console.WriteLine(String.Format("MyClass() Start. 时间:{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture)));
    DisplayValue();  

    Console.WriteLine(String.Format("MyClass() End. 时间:{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture)));
    }
    public Task<double> GetValueAsync(double num1, double num2)
    {

    return Task.Run(() =>
    {
    for (int i = 0; i < 1000000; i++)
    {
    num1 = num1 / num2;
    }
    return num1;
    });
    }
    public void DisplayValue()
    {
    double result = GetValueAsync(1234.5, 1.01).Result ;
    System.Threading.Thread.Sleep(5000);
    Console.WriteLine(String.Format("Value is : {0} 时间:{1}",result,DateTime.Now.ToString(CultureInfo.InvariantCulture)));
    }
    }

    异步执行

    class Program
    {
    static void Main(string[] args)
    {
    new MyClass();
    Console.Read();
    }
    }
    public class MyClass
    {
    public MyClass()
    {
    Console.WriteLine(String.Format("MyClass() Start. 时间:{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture)));
    DisplayValue(); //这里不会阻塞

    Console.WriteLine(String.Format("MyClass() End. 时间:{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture)));
    }
    public Task<double> GetValueAsync(double num1, double num2)
    {

    return Task.Run(() =>
    {
    for (int i = 0; i < 1000000; i++)
    {
    num1 = num1 / num2;
    }
    return num1;
    });
    }
    public async void DisplayValue()
    {
    double result = await GetValueAsync(1234.5, 1.01);//此处会开新线程处理GetValueAsync任务,然后方法马上返回
    //这之后的所有代码都会被封装成委托,在GetValueAsync任务完成时调用
    System.Threading.Thread.Sleep(5000);
    Console.WriteLine(String.Format("Value is : {0} 时间:{1}",result,DateTime.Now.ToString(CultureInfo.InvariantCulture)));
    }
    }

  • 相关阅读:
    php 表单的活用
    PHP 内存的分布问题
    php 半角与全角相关的正则
    解决 U盘安装Windows Server 2012 R2 报错 Windows 无法打开所需的文件 Sourcesinstall.wim
    VS2010或2012中,如何设置代码格式化?
    变色龙引导安装黑苹果 遇到的问题的解决办法
    Ozmosis实现BIOS直接启动Yosemite,基本完美
    MMTool制作Ozmosis引导BIOS完美引导OS X系统
    黑苹果安装步骤
    win8.1 usb3 速度慢的解决方法
  • 原文地址:https://www.cnblogs.com/zhshlimi/p/5465859.html
Copyright © 2020-2023  润新知