zoukankan      html  css  js  c++  java
  • C#中的async和await

    其实这两个关键字的功效比之前的异步方法调用有一个好处,那就是异步阻塞的方法可以有返回值。之前都是通过回调函数实现,执行上下文会切换,不过和这个执行过程类似。可以对这两个关键字这么理解:遇到async的语句是异步的,遇到await的语句是阻塞的。

    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Debug.WriteLine("{0} Main Start.", DateTime.Now);
                Thread1();
                Debug.WriteLine("{0} Main End.", DateTime.Now);
                Console.In.ReadLine();
            }
    
            private static async void Thread1()
            {
                var result = await Proc1();     //此处会阻塞
                Debug.WriteLine("{0} result={1}.", DateTime.Now, result);
            }
    
            private static Task<int> Proc1()    //注意此处返回类型的定义
            {
                return Task.Run(() => { 
                    Debug.WriteLine("{0} Proc 1 start.", DateTime.Now);
                    Thread.Sleep(5000);
                    Debug.WriteLine("{0} Proc 1 end.", DateTime.Now);
                    return 10;
                });
            }
        }
    }

    程序输出:

    10/18/2016 11:37:10 Main Start.
    10/18/2016 11:37:10 Main End.
    10/18/2016 11:37:10 Proc 1 start.
    10/18/2016 11:37:15 Proc 1 end.
    10/18/2016 11:37:15 result=10.
    private async void MyWebClient_Navigating(string url)
            {
                await Task.Run(() => { });  //语法有点扯淡,有了这句编译就能通过
                DetailNavigate(url);  //同步方法
            }
  • 相关阅读:
    Android的Activity屏幕切换动画(一)-左右滑动切换
    404 Not Found 由来
    HTML+CSS 制作HTML5标志图
    发现 网站错误
    链接指南
    偷懒省事有工具啊
    程序员很穷(转)
    谷歌浏览器修改CSS和js后同步保存到文件中 (译)
    程序员眼睛的保护(爱护眼睛,你我做起)
    仿站违法和侵权吗?
  • 原文地址:https://www.cnblogs.com/nanfei/p/4855850.html
Copyright © 2011-2022 走看看