zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    转:pthread_detach()函数
    转: pthread_create()
    转:exit()与_exit()的区别
    转:perror和strerror的区别
    转:socket通信简介
    82-基于Xilinx Virtex-5LXT FPGA的四路光纤PCIE卡(4路光纤卡)
    18-基于双TMS320C6678 DSP的3U VPX的信号处理平台
    ZYNQ系列
    372-基于XC7VX690T的高速模拟信号、万兆光纤综合计算平台
    V7双雄-基于Virtex7XC7VX690T的高性能计算板卡解决方案
  • 原文地址:https://www.cnblogs.com/xieyi/p/2128676.html
Copyright © 2011-2022 走看看