欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

關(guān)于異步編程的簡單理解:

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

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

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

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

復(fù)制代碼 代碼如下:

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

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

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

接下來是簡單的調(diào)用

復(fù)制代碼 代碼如下:

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

            Console.WriteLine("======異步方法調(diào)用=====");
            AsyncPrintHelloWorld();
            Console.WriteLine("異步方法調(diào)用結(jié)束");
            Console.ReadLine();
        }

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

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

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

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

復(fù)制代碼 代碼如下:

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("累死了,真想不出啥好的例子來調(diào)用");
            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>為返回結(jié)果,那么這個方法必須包含return指定的TResult結(jié)果的語句。

一個async方法里通常包含一個或多個的對應(yīng)的await操作符,但如果沒有await表達式也不會導(dǎo)致編譯錯誤。但如果調(diào)用一個async方 法,卻不使用await關(guān)鍵字來標(biāo)記一個掛起點的話,程序?qū)雎詀sync關(guān)鍵字并以同步的方式執(zhí)行

總結(jié)

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

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

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

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

相關(guān)文章

  • 為Xamarin.Forms的導(dǎo)航欄增加搜索功能

    為Xamarin.Forms的導(dǎo)航欄增加搜索功能

    這篇文章介紹了為Xamarin.Forms的導(dǎo)航欄增加搜索功能的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • C# 創(chuàng)建EXCEL圖表并保存為圖片的實例

    C# 創(chuàng)建EXCEL圖表并保存為圖片的實例

    下面小編就為大家分享一篇C# 創(chuàng)建EXCEL圖表并保存為圖片的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 詳解C# 中Session的用法

    詳解C# 中Session的用法

    這篇文章主要介紹了C# 中Session的用法,文中講解非常細致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 一看就懂:圖解C#中的值類型、引用類型、棧、堆、ref、out

    一看就懂:圖解C#中的值類型、引用類型、棧、堆、ref、out

    這篇文章主要介紹了一看就懂:圖解C#中的值類型、引用類型、棧、堆、ref、out,本文用淺顯易懂的語言組織介紹了這些容易混淆的概念,需要的朋友可以參考下
    2015-06-06
  • WPF自定義控件的實現(xiàn)

    WPF自定義控件的實現(xiàn)

    本文主要介紹了WPF自定義控件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • C#敏感詞過濾實現(xiàn)方法

    C#敏感詞過濾實現(xiàn)方法

    這篇文章主要介紹了C#敏感詞過濾實現(xiàn)方法,涉及C#針對字符串操作的常用技巧,非常具有實用價值,需要的朋友可以參考下
    2015-05-05
  • C#實現(xiàn)利用反射簡化給類字段賦值的方法

    C#實現(xiàn)利用反射簡化給類字段賦值的方法

    這篇文章主要介紹了C#實現(xiàn)利用反射簡化給類字段賦值的方法,涉及C#操作反射的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • C# 禁用鼠標(biāo)中間鍵的方法

    C# 禁用鼠標(biāo)中間鍵的方法

    關(guān)于?。? System.Windows.Forms.NumericUpDown 控件,如何禁用鼠標(biāo)中間鍵?
    2013-03-03
  • C#復(fù)制數(shù)組的兩種方式及效率比較

    C#復(fù)制數(shù)組的兩種方式及效率比較

    這篇文章介紹了C#復(fù)制數(shù)組的兩種方式及效率比較,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • C# RGB圖像和灰度圖像互轉(zhuǎn)的實現(xiàn)

    C# RGB圖像和灰度圖像互轉(zhuǎn)的實現(xiàn)

    在我們的圖像類型教程中定義了RGB顏色模型和灰度格式,本文主要介紹了C# RGB圖像和灰度圖像互轉(zhuǎn)的實現(xiàn),文中通過代碼介紹的非常清楚,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08

最新評論