当前位置:  开发笔记 > 编程语言 > 正文

如何等待任务完成Task.WhenAll?

如何解决《如何等待任务完成Task.WhenAll?》经验,为你挑选了1个好方法。

到目前为止这一切都有效,但有两件事让我感到困扰,我认为我使用的是错误的方式

问题#1 - 我只想返回一个字符串,但我似乎被迫返回一个字符串ARRAY.我怎样才能让这个返回一个字符串?

   Task taskVelocifyData = GetVelocifyData();
            string[] userEmail = await Task.WhenAll(taskVelocifyData);

问题#2 - 不确定这是否是一个问题,但在进入下一个异步任务之前,这是等待异步任务完成的最佳选择吗?

  private async void DispatcherTimer_Tick(object sender, object e)
    {
        List[] photos = new List[10];

        try
        {
            //Use Velocify API to get most recent lead
            Task taskVelocifyData = GetVelocifyData();
            string[] userEmail = await Task.WhenAll(taskVelocifyData);

            //Ignore recent lead if it has not changed
            if (lsi.VelocifyLeadTitle != previousVelocifyLeadTitle)
            {
                //If there is an email, use FullContact API to get photos
                if (userEmail[0] != "")
                {
                    var taskFullContactData = GetFullContactData(userEmail[0]);
                     photos = await Task.WhenAll(taskFullContactData);

                    if (photos.Count() != 0)
                    {
                        var taskFaceData = GetFaceData(photos);
                    }

                }
                else
                {
                    lsi.FullContactPictures = new ObservableCollection();
                }

                // DEBUG
                //   dispatcherTimer.Stop();

                LeadSpeakerItems.Add(lsi);

                SpeakData(leadSpeakerItems.Last().VelocifyLeadTitle);
            }

            previousVelocifyLeadTitle = lsi.VelocifyLeadTitle;
        }
        catch (Exception ex)
        {

        }

Jakub Lortz.. 7

你有一个Task,所以你可以await直接.你不需要Task.WhenAll.

string userEmail = await GetVelocifyData();

Task.WhenAll方法

创建一个任务,该任务将在可枚举集合中的所有System.Threading.Tasks.Task对象完成时完成.

完成后,任务将返回一个数组,其中包含传递给所有任务的结果Task.WhenAll.



1> Jakub Lortz..:

你有一个Task,所以你可以await直接.你不需要Task.WhenAll.

string userEmail = await GetVelocifyData();

Task.WhenAll方法

创建一个任务,该任务将在可枚举集合中的所有System.Threading.Tasks.Task对象完成时完成.

完成后,任务将返回一个数组,其中包含传递给所有任务的结果Task.WhenAll.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有