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

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

將 Long 轉換為 Task<long>

將 Long 轉換為 Task<long>

C#
狐的傳說 2023-08-20 15:11:09
我只是Async從書本上學習編程,呵呵!他們的例子不起作用。作者(WebAPI2 書中的 Adam Freeman,第 3 章,第 47 頁?。┫胍忉屢环N技術,當我們有一系列同步語句并且我們想要執行它們時Async。他說這是通過創建一個啟動任務來完成的,該任務包裝我們需要執行的語句并返回任務作為方法的結果。然后他說看這個例子。好驚喜!它甚至不起作用,因為它無法從 轉換long為Task<long>我該如何修復這段代碼?public interface ICustomController{    Task<long> GetPageSize(CancellationToken cancellationToken);}public Task<long> GetPageSize(CancellationToken cancellationToken){    WebClient wb = new WebClient();    Stopwatch sw = Stopwatch.StartNew();    List<long> results = new List<long>();    for(int i=0; i<10; i++)    {        if (!cancellationToken.IsCancellationRequested)        {            Debug.WriteLine("Making Request {0} ", i);            results.Add(wb.DownloadData(TargetUrl).LongLength);        }        else        {            Debug.WriteLine("Cancelled...");            return 0;        }    }    Debug.WriteLine("Elapsed ms: {0} ", sw.ElapsedMilliseconds);    return (long)results.Average();}請注意,他故意從方法中刪除了aysncand ,以便他可以解釋這種技術......但他忘記了實際修復他的代碼。await
查看完整描述

2 回答

?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

return Task.FromResult((long)results.Average());

這是從非異步函數返回可等待結果的方式。


查看完整回答
反對 回復 2023-08-20
?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

我假設他想用來Task.Run()將工作加載到線程池線程。你可以像這樣使用它


public Task<long> GetPageSize(CancellationToken cancellationToken))

{

? ? return Task.Run(() =>?

? ? {

? ? ? ? ?// body of the original methode

? ? });

}

調用者可以等待返回的Task對象。


查看完整回答
反對 回復 2023-08-20
  • 2 回答
  • 0 關注
  • 153 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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