最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.net4.5使用async和await異步編程實例

 更新時間:2013年12月18日 11:34:09   作者:  
.net4.5使用async和await異步編程實例,大家參考使用吧

關于異步編程的簡單理解:

在.NET4.5中新增了異步編程的新特性async和await,使得異步編程更為簡單。通過特性可以將這項復雜的工作交給編譯器來完成了。之前傳統(tǒng)的方式來實現(xiàn)異步編程較為復雜,這樣對于程序猿來說處理起來比較困難,調試也沒那么方便,后續(xù)的維護工作也比較痛苦。

Async和Await關鍵字是C#異步編程的核心。通過使用這兩個關鍵字,你可以使用.NET Framework 或 Windows Runtime的資源創(chuàng)建一個異步方法如同創(chuàng)建一個同步方法一樣容易。

接下來通過VS2013 創(chuàng)建一個基于.NET4.5的控制臺應用程序進行嘗試。

先直接把簡單的代碼貼出來,如下所示

復制代碼 代碼如下:

/// <summary>
        /// 同步方法打印Hello World
        /// </summary>
        public static void PrintHelloWorld()
        {
            Console.WriteLine("同步方法調用開始");
            Console.WriteLine("同步方法:Hello World");
            Thread.Sleep(1000);
            Console.WriteLine("退出同步方法");
        }

        /// <summary>
        /// 異步方法打印Hello World
        /// </summary>
        public async static void AsyncPrintHelloWorld()
        {
            Console.WriteLine("異步方法調用開始");
            Console.WriteLine("異步方法:Hello World");
            await Task.Delay(1000);
            Console.WriteLine("退出異步方法");
        }

上面注釋中也有進行說明,第一個是同步方法,第二個是異步方法。同步方法可以通過Thread.Sleep(1000);暫停方法執(zhí)行1000ms,同樣的異步方法可以通過await Task.Delay(1000)來處理,而且在異步方法的聲明中要加入async的關鍵字。

接下來是簡單的調用

復制代碼 代碼如下:

static void Main(string[] args)
        {
            Console.WriteLine("======同步方法調用=====");
            PrintHelloWorld();
            Console.WriteLine("同步方法調用結束");

            Console.WriteLine("======異步方法調用=====");
            AsyncPrintHelloWorld();
            Console.WriteLine("異步方法調用結束");
            Console.ReadLine();
        }

F5執(zhí)行后結果如下

通過執(zhí)行結果可以很明顯的看出,調用的同步方法里面是順序執(zhí)行的,而在異步方法中不一樣,當通過Task.Delay(1000)暫停當前方法的時候,其方法外面的下面的方法會繼續(xù)執(zhí)行,也就是打印“異步方法調用結束”的語句。

可以發(fā)現(xiàn)使用了關鍵字之后,同步與異步的語法差別很小。隨著.NET4.5的推出,許多類庫和已有類庫都將支持這種新型的異步語法,比如我正在學習的HTTPClient等等。

上面的演示只是通過簡單的void的方法進行演示的,當然肯定可以帶上返回值的額。

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace Async
{
    class Program
    {
        static void Main(string[] args)
        {
            var ret = AsyncAdd("累死了,真想不出啥好的例子來調用");
            Console.WriteLine(ret.Result);
            Console.ReadLine();
        }
           

        ///異步打印傳入的字符串
        public async static Task<string> AsyncAdd(string str)
        {
            string result = await PringString(str);
            return result;

        }

        public async static Task<string> PringString(string str)
        {
            return "Hello World" + str;
        }
    }
}

通過運行其實和同步的是一樣的,只不過看看如何來定義異步方法的返回值,根據(jù)Task<T>來進行定義。

如果指定Task<TResult>為返回結果,那么這個方法必須包含return指定的TResult結果的語句。

一個async方法里通常包含一個或多個的對應的await操作符,但如果沒有await表達式也不會導致編譯錯誤。但如果調用一個async方 法,卻不使用await關鍵字來標記一個掛起點的話,程序將會忽略async關鍵字并以同步的方式執(zhí)行

總結

1.一個異步方法的聲明中必然包含一個async的修飾符。

 2.異步方法的方法名可以以“Async”結尾。

 3.Task<TResult> 當你的方法有返回值時,那么TResult即返回值的類型

 4.方法通常至少包含一個await表達式。

相關文章

  • c#英文單詞分類統(tǒng)計示例分享

    c#英文單詞分類統(tǒng)計示例分享

    本文給出的題目是給出一段英文,對其分類統(tǒng)計出英文單詞的個數(shù)如:長度為4的單詞有2個,長度為3的有1個,下面是題目答案
    2014-03-03
  • C#實現(xiàn)小截屏軟件功能

    C#實現(xiàn)小截屏軟件功能

    這篇文章主要為大家詳細介紹了C#實現(xiàn)截圖軟件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • C#實現(xiàn)自定義圓角按鈕的方法

    C#實現(xiàn)自定義圓角按鈕的方法

    Winform中自帶的button沒有圓角屬性,所以我們繼承Button類,重寫OnPaint事件來繪制圓角按鈕。下面通過實例代碼給大家介紹下C#實現(xiàn)自定義圓角按鈕的方法,需要的朋友參考下吧
    2021-11-11
  • C#通過流寫入一行數(shù)據(jù)到文件的方法

    C#通過流寫入一行數(shù)據(jù)到文件的方法

    這篇文章主要介紹了C#通過流寫入一行數(shù)據(jù)到文件的方法,涉及C#針對文本文件讀寫的基本技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • C#實現(xiàn)設置Excel表格中文本對齊方式和格式

    C#實現(xiàn)設置Excel表格中文本對齊方式和格式

    這篇文章主要為大家詳細介紹了如何在.NET 程序中通過C# 設置Excel單元格中文本的對齊方式,方向以及換行,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-04-04
  • WPF中MVVM模式的理解與實現(xiàn)

    WPF中MVVM模式的理解與實現(xiàn)

    MVVM是一種設計模式,特別適用于WPF(Windows Presentation Foundation)等XAML-based的應用程序開發(fā),MVVM模式主要包含三個部分:Model(模型)、View(視圖)和ViewModel(視圖模型),本文給大家介紹了WPF中MVVM模式的理解與實現(xiàn),需要的朋友可以參考下
    2024-05-05
  • C#實現(xiàn)Menu和ContextMenu自定義風格及contextMenu自定義

    C#實現(xiàn)Menu和ContextMenu自定義風格及contextMenu自定義

    ContextMenu 類表示當用戶在控件或窗體的特定區(qū)域上單擊鼠標右鍵時會顯示的快捷菜單,要想實現(xiàn)自定義的Menu和ContextMenu效果,大家可以通過派生ProfessionalColorTable類,下面小編把實現(xiàn)Menu和ContextMenu自定義風格及ContextMenu自定義給大家整理一下
    2015-08-08
  • C#自定義HttpFilter模塊完善實例

    C#自定義HttpFilter模塊完善實例

    這篇文章主要介紹了C#自定義HttpFilter模塊完善的方法,以實例的形式具體講述了C#自定義HttpFilter模塊的原理與完善的方法,非常實用,需要的朋友可以參考下
    2014-10-10
  • unity里獲取text中文字寬度并截斷省略的操作

    unity里獲取text中文字寬度并截斷省略的操作

    這篇文章主要介紹了unity里獲取text中文字寬度并截斷省略的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • c#構造初始化的順序淺析

    c#構造初始化的順序淺析

    這篇文章介紹了c#構造初始化的順序,有需要的朋友可以參考一下
    2013-08-08

最新評論

安化县| 庆云县| 磐安县| 喜德县| 前郭尔| 凉城县| 丹江口市| 札达县| 吉木萨尔县| 罗田县| 南和县| 孟村| 潞西市| 宁城县| 榆林市| 潍坊市| 巩义市| 汝州市| 榆树市| 博客| 宁海县| 武胜县| 宁河县| 瑞昌市| 湘潭县| 藁城市| 达孜县| 马尔康县| 邢台市| 湘乡市| 怀来县| 鲜城| 尉氏县| 双辽市| 庆城县| 墨竹工卡县| 惠州市| 海门市| 大姚县| 平舆县| 康平县|