• WP7下的异步


           先来介绍一下异步所需要的组件,Async CTP Refres微软在2011年4月13号发布了一个VS2010 的补丁,这个补丁可以运用在Windows Phone 7的开发中,也可以运用在所有的.NET 平台环境中。

           CTP有几个新的关键字:

    • async: 标记一个函数为异步函数,而这个函数必须返回的是viod ,Task, Task<T> 这三种类型。在一个异步函数的里面,你可以使用await 表达式来等待一个任务。换句话说,把当前的功能的执行过程停止,直到你要求等待的那个任务执行完成。(编程语言负责设置和处理流程的继续)。
    • await:让执行流程停止在当前的函数直到返回类型是Task或者Task<T>的函数调用结束,然后执行过程继续到调用await的函数。
    • Task:用来展现异步操作和表现出检查当前执行状态所需要的信息或者await函数直到执行到最后。
    • TaskEx:允许一些Helper和Utililty方法,让异步代码可以在不同的线程或者await多个任务结束。

             下面介绍一个简单异步调用

              调用viod类型的异步函数

       
      public static void WriteTxt()
              {
                  Console.WriteLine("Start Thread---");
                  WriteLine();
                  Console.WriteLine("End Thread---");
                  Console.ReadLine();
              }

            上面方法中WriteLine()async 关键字的异步函数

      public static async void WriteLine()
              {
                  string a = await NewLine();
                  Console.WriteLine(a);
              }

            在这个方法中 NewLine() 是Task<T>类型的方法,在调用Task<T>类型方法前使用关键字await,可以使这个方法等待NewLine()执行结束了,才执行Console.WriteLine(a).而不影响WriteLine()函数中的Console.WriteLine("End Thread---")执行。

      public static Task<string> NewLine()
              {
                  var task = new Task<string>(() => {
                      Thread.Sleep(5000);
                      return "AAA";
                  });
                  task.Start();
                  return task;
              }

           这段代码是异步的关键,构建一个Task对象,Task<T> 的T就是函数返回的最终类型。就是Task<string> NewLine() 是写具体异步所需要执行的逻辑代码。

           这个代码的执行结果应该是

             image

  • 相关阅读:
    sleep和wait区别
    java学习路线图
    screen实现关闭ssh之后继续运行代码
    linux截取字符串的多种方法
    如何用Maven创建web项目(具体步骤)
    Failed to read candidate component class包冲突解决方法
    hadoop参数配置
    How to solve java.net.SocketTimeoutException:60000millis problem in HDFS
    win8style布局
    signalR的一些细节
  • 原文地址:https://www.cnblogs.com/xieyi/p/2128676.html
Copyright © 2020-2023  润新知