亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# async-await 如何處理長操作?

C# async-await 如何處理長操作?

C#
臨摹微笑 2022-07-23 17:44:11
我的服務中有以下代碼:        // add Txt record to DNSimple with verification text        await CreateDomainRecordAsync(domain, new DomainRecordDto        {            //....        });        // verify domain on Office365        await _office365domainService.VerifyDomainAsync(domain);第一個操作是調用端點 #1(域注冊者)并將 TXT 記錄添加到域。第二個操作是調用端點#2(Office365),它驗證域注冊器中是否存在TXT記錄。此代碼不起作用,我在第二次操作時遇到異常,即 TXT 記錄不存在。我創建了測試代碼:    public IActionResult LongOperation()    {        Thread.Sleep(10 * 1000);        return Ok();    }    public IActionResult Test()    {        return Ok();    }并稱之為:        using (HttpClient httpClient = new HttpClient())        {            httpClient.BaseAddress = new Uri("http://test***.azurewebsites.net/home/");            await httpClient.GetAsync("LongOperation");        }        using (HttpClient httpClientLocal = new HttpClient())        {            httpClientLocal.BaseAddress = new Uri("https://localhost:44366/Home");            await httpClientLocal.GetAsync("Test");        }它按我的預期工作,調用第一個方法,在執行“LongOperation”時等待 10 秒,然后調用“Test”方法。為什么我的帶有域的真實代碼不等待以及如何正確執行?
查看完整描述

1 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

你甚至可能沒有異步等待的問題。

第一個操作執行異步并且您等待,但這是 DNS 配置更改 - 由于多個 DNS 緩存層,它可能在幾分鐘內不可見 office 365。這里的錯誤假設是:

  • DNS 更改立即可見

  • 這是一個異步/等待問題。

通常對于像 DNS 這樣的東西,您可能希望每 15 秒重試一次并在一段時間后放棄,或者采用處理更長超時時間的工作流程。這與異步/等待無關 - 這與服務器可能延遲交付的電子郵件相同。它是協議的一部分。


查看完整回答
反對 回復 2022-07-23
  • 1 回答
  • 0 關注
  • 119 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號