簡體   English   中英

如何用Task.WhenAll等待Task完成?

[英]How to wait for Tasks to finish with Task.WhenAll ?

到目前為止,所有方法都有效,但是有兩件事困擾着我,我認為我使用了錯誤的方式

問題#1-我只想返回一個字符串,但是我似乎被迫返回一個字符串ARRAY。 我怎樣才能使它返回一個字符串?

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

問題2-不確定是否存在問題,但這是否是等待下一個異步任務完成之前等待異步任務的最佳選擇?

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

        try
        {
            //Use Velocify API to get most recent lead
            Task<string> 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<string>();
                }

                // DEBUG
                //   dispatcherTimer.Stop();

                LeadSpeakerItems.Add(lsi);

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

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

        }

您只有一個Task ,因此可以直接await它。 您不需要Task.WhenAll

string userEmail = await GetVelocifyData();

Task.WhenAll方法

創建一個將在可枚舉集合中的所有System.Threading.Tasks.Task對象都完成時完成的任務。

完成后,任務將返回一個數組,其中包含所有傳遞給Task.WhenAll任務的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM