8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

调用 Task.WhenAll() 后获取结果

Webmaster STC Chicago 1月前

20 0

Task.WhenAll(params System.Threading.Tasks.Task[] task) 返回 Task,但是调用此方法后,获取任务结果的正确方法是什么?等待该任务后,就可以获取结果了……

Task.WhenAll(params System.Threading.Tasks.Task[] tasks) 返回 Task,但调用此方法后获取任务结果的正确方法是什么?等待该任务后,可以通过再次等待原始任务来获取结果,这应该没问题,因为任务已经完成。也可以使用 Task.Result 属性获取结果,但通常认为这不是好的做法

Task<TResult1> task1= ...
Task<TResult2> task2= ...
Task<TResult3> task3= ...

await Task.WhenAll(task1, task2, task3)
var a = task1.Result; // returns TResult1
var b = await task1; // also returns TResult1

我应该在这里选择哪一个以及为什么?

帖子版权声明 1、本帖标题:调用 Task.WhenAll() 后获取结果
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Webmaster STC Chicago在本站《winforms》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 这是返回的过载 Task<TResult[]> - MS Docs

    例子:

    static async Task Test()
    {
        List<Task<string>> tasks = new List<Task<string>>();
        for (int i = 0; i < 5; i++)
        {
            var currentTask = GetStringAsync();
            tasks.Add(currentTask);
        }
    
        string[] result = await Task.WhenAll(tasks);
    }
    
    static async Task<string> GetStringAsync()
    {
        await Task.Delay(1000);
        return "Result string";
    }
    
    
返回
作者最近主题: