亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

異步編程異常和死鎖處理

2019-11-14 14:10:51
字體:
來源:轉載
供稿:網友

 

在.NET異步編程中,通常使用async和await這對黃金搭檔,返回類型使用Task或Task<T>。在方法前面加async表示這個方法運行異步,在方法內使用await表示執行一個異步等待。

 

下面是一個簡單例子:

 

        static void Main(string[] args)
        {
            Doth();
            Console.ReadKey();
        }
        static async Task Doth()
        {
            int i = 2;
            await Task.Delay(TimeSpan.FromSeconds(2));
            i += 2;
            await Task.Delay(TimeSpan.FromSeconds(2));
            Console.WriteLine(i);
        }

 

當執行DoSth方法,第一個await執行一個異步等待,當執行完成,就繼續執行下面的代碼。在async修飾的方法內部,一個await就是一個異步等待,可以包含多個await, 每一個await執行完畢才會執行它后面的代碼,也就是說在DoSth內部是同步的。

 

各個await在哪個線程中運行呢?

 

默認情況下是在當前線程中運行,不過.NET提供了ConfigureAwait方法,用來設置await在哪個線程中運行。

 

        static async Task Doth()
        {
            int i = 2;
            await Task.Delay(TimeSpan.FromSeconds(2)).ConfigureAwait(false);
            i += 2;
            await Task.Delay(TimeSpan.FromSeconds(2)).ConfigureAwait(false);
            Console.WriteLine(i);
        }

 

以上,當第一個await運行在控制臺項目所在的線程中,第二個await將在線程池上運行。

 

我們無法保證每個await不會拋出異常,通常按如下的方式捕獲異常。

 

async Task DosthAsync()
{
    try
    {
        await PossibleExceptionAsync();
    }
    catch(NotSuppotedException ex)
    {
        LogException(ex);
        throw;
    }
}

 

由于拋出的異常會放在Task對象中,所以也可以這么寫:

 

async Task DosthAsync()
{
    Task task = PossibleExceptionAsync();
    try
    {
        await task;
    }
    cach(NotSupportedException ex)
    {
        LogException(ex);
        throw;
    }
}

 

異步編程也會出現死鎖。

 

async Task DoSthSync()
{
    await Task.Delay(TimeSpan.FromSeconds(1));
}
void FirstThing()
{
    Task tak = DoSthSync();
    task.Wait();
}

 

以上,如果調用FirstThing方法就會出現死鎖的情況。

 

→執行FirstThing方法
→在FirstThing方法內部執行DoSthSync方法,這時,當前上下文線程被阻塞
→來到DoSthSync方法中,其中的await試圖捕獲當前上下文線程,而當前的上下線程已經被阻塞在那里了,造成死鎖。

 

死鎖如何解決死鎖呢?

 

可以在DoSthSync內部不使用當前上下文線程,改用線程池中的線程,修改如下:

 

async Task DoSthSync()
{
    await Task.Delay(TimeSpan.FromSeconds(1)).ConfigureAwait(false);
}

 

或者,讓FirstThing變成一個異步方法。修改如下:

 

async Task DoSthSync()
{
    await Task.Delay(TimeSpan.FromSeconds(1));
}
async Task FirstThing()
{
    await DoSthSync();
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91久久久久久| 午夜精品99久久免费| 亚洲国产精品成人av| 日韩男女性生活视频| 7777精品视频| 日韩av电影在线播放| 亚洲国产精品va在线| 日韩网站免费观看| 成人久久精品视频| 91精品国产乱码久久久久久久久| 精品女同一区二区三区在线播放| 亚洲女人被黑人巨大进入al| 国产一区二区三区欧美| 欧美在线亚洲一区| 社区色欧美激情 | 欧美人交a欧美精品| 国产精品三级久久久久久电影| 91精品国产综合久久香蕉| 欧美精品videosex极品1| 亚洲国产精品va在线看黑人动漫| 欧洲亚洲在线视频| 在线观看欧美成人| 日韩成人在线视频网站| 日韩av在线高清| 欧美性高跟鞋xxxxhd| 国产欧美一区二区三区视频| 久久久久久国产三级电影| 性亚洲最疯狂xxxx高清| 国产精品福利观看| 国内外成人免费激情在线视频网站| 亚洲第一网站男人都懂| 69视频在线免费观看| 青青草原成人在线视频| 色综合久久天天综线观看| 欧美性高潮在线| 久久久精品久久| 最近中文字幕mv在线一区二区三区四区| 欧美日韩免费观看中文| 韩国国内大量揄拍精品视频| 亚洲精品日韩久久久| 久久最新资源网| 欧美亚州一区二区三区| 色综合久综合久久综合久鬼88| 4438全国成人免费| 日韩国产高清视频在线| 久久男人av资源网站| 日本免费在线精品| 国产日韩欧美视频在线| 国产成人精品一区二区在线| 精品高清美女精品国产区| 91精品视频在线看| 欧美极品欧美精品欧美视频| 日韩视频―中文字幕| 亚洲欧洲黄色网| 最近中文字幕日韩精品| 日韩av片电影专区| 久久久国产在线视频| 亚洲人成五月天| 欧美人与性动交a欧美精品| 不卡av电影院| 亚洲图片欧美日产| 欧美大尺度电影在线观看| 国产精品吴梦梦| 国产精品久久久久av免费| 庆余年2免费日韩剧观看大牛| 成人av.网址在线网站| 国产91免费观看| 精品av在线播放| 韩国三级电影久久久久久| 国产精品欧美一区二区| 欧美性猛交xxxx乱大交3| 亚洲欧美精品在线| 2019中文在线观看| 97视频免费观看| 日韩在线视频免费观看高清中文| 亚洲精品www久久久久久广东| 亚洲精品免费av| 亚洲精品电影网| 国产精品日本精品| 人人爽久久涩噜噜噜网站| 免费97视频在线精品国自产拍| 热门国产精品亚洲第一区在线| 欧美激情videos| 亚洲欧美日韩精品| 97成人精品视频在线观看| 中文字幕成人在线| 欧美在线性视频| 欧美性xxxxxxxxx| 久久精品电影网站| 68精品国产免费久久久久久婷婷| 欧美极品少妇xxxxⅹ裸体艺术| 国内精久久久久久久久久人| 欧美综合在线第二页| 亚洲色图国产精品| 日韩午夜在线视频| 国产精品美乳一区二区免费| 欧美国产日韩中文字幕在线| 一区二区av在线| 91chinesevideo永久地址| 久久久免费观看| 精品久久久久久久久中文字幕| 亚洲第一福利视频| 亚洲另类欧美自拍| 久久久99久久精品女同性| 亚洲国产欧美一区二区丝袜黑人| 久久亚洲影音av资源网| 8x拔播拔播x8国产精品| 国产免费亚洲高清| 久久精品视频导航| 国产美女精品视频免费观看| 亚洲a在线观看| 亚洲午夜未删减在线观看| 亚洲综合最新在线| 26uuu国产精品视频| 国产精品免费久久久久久| 538国产精品视频一区二区| 中文字幕少妇一区二区三区| 亚洲国产精品视频在线观看| 亚洲美腿欧美激情另类| 国产午夜精品理论片a级探花| 亚洲一区二区福利| 久久亚洲精品中文字幕冲田杏梨| 欧美成人免费全部观看天天性色| 国产女精品视频网站免费| 日韩精品高清在线观看| 国产91免费观看| 91av视频在线播放| 欧美亚洲伦理www| 欧美成人午夜剧场免费观看| 日韩在线观看视频免费| 欧美日韩高清在线观看| 2018日韩中文字幕| 98午夜经典影视| 91麻豆国产精品| 久久久久久久91| 日本高清不卡的在线| 亚洲精品一区二三区不卡| 亚洲最大福利视频网站| 欧美大胆a视频| 啊v视频在线一区二区三区| 成人激情综合网| 亚洲欧美在线第一页| 有码中文亚洲精品| 成人免费大片黄在线播放| 九九久久精品一区| 欧美性生交xxxxx久久久| 亚洲高清色综合| 91国自产精品中文字幕亚洲| 66m—66摸成人免费视频| 国产精品久久99久久| 国产在线高清精品| 丝袜美腿亚洲一区二区| 深夜福利亚洲导航| 国产精品草莓在线免费观看| 亚洲肉体裸体xxxx137| 欧美午夜片欧美片在线观看| 国产999精品视频| 日韩电影中文字幕在线| 国产a∨精品一区二区三区不卡| 国产在线高清精品| 欧美在线性视频| 欧美性精品220| 久久不射电影网| 日韩精品视频在线观看网址|