第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

為什么我的異步任務(wù)在等待另一個完成?

為什么我的異步任務(wù)在等待另一個完成?

C#
萬千封印 2021-11-21 14:33:25
private async void StartTasks_Click(object sender, RoutedEventArgs e) {    await Task.WhenAll(GetSomeData());    lblResult.Text = "Got data?";}private async Task GetSomeData(){    System.Net.ServicePointManager.DefaultConnectionLimit = 16;    ServiceClient _proxy = new ServiceClient();    //*** the wcf proxy service methods just sleep for 5 seconds.    var t1 = _wcfProxy.A();    var t2 = _wcfProxy.A();    var t3 = _wcfProxy.A();    var t4 = _wcfProxy.A();    await Task.WhenAll(t1,t2,t3,t4);}當(dāng)我點擊我的按鈕時,我希望我的標(biāo)簽文本被設(shè)置5 seconds(因為我的 WCF 方法調(diào)用只是休眠 5 秒)。嗯,它需要10 seconds。現(xiàn)在,當(dāng)我只進行三個服務(wù)調(diào)用而不是四個時,標(biāo)簽設(shè)置在5 seconds.當(dāng)我在進行所有四個調(diào)用時查看性能監(jiān)視器中的調(diào)用計數(shù)時,我只看到 3 個進入,然后在前三個完成后其他 1 個進入。
查看完整描述

1 回答

?
夢里花落0921

TA貢獻1772條經(jīng)驗 獲得超6個贊

總而言之,您的 WCF 服務(wù)的默認(rèn) IOCP 線程池似乎正在耗盡(很難說出原因;請檢查ThreadPool.GetMinThreadsThreadPool.GetAvailableThreads)。因此,最有可能的是,當(dāng)您使用Thread.Sleepwhile services 阻塞 WCF 線程時_wcfProxy.A(),沒有另一個線程可用于 serve _wcfProxy.B(),因此B請求會排隊等待,直到A完成。

嘗試實現(xiàn)WorkerThreadPoolSynchronizerWorkerThreadPoolBehaviorAttribute按照該文章中的描述,應(yīng)用[WorkerThreadPoolBehavior]AandB并查看是否可以解決問題。


查看完整回答
反對 回復(fù) 2021-11-21
  • 1 回答
  • 0 關(guān)注
  • 178 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號