到目前为止这一切都有效,但有两件事让我感到困扰,我认为我使用的是错误的方式
问题#1 - 我只想返回一个字符串,但我似乎被迫返回一个字符串ARRAY.我怎样才能让这个返回一个字符串?
TasktaskVelocifyData = 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
.
你有一个Task
,所以你可以await
直接.你不需要Task.WhenAll
.
string userEmail = await GetVelocifyData();
该Task.WhenAll
方法
创建一个任务,该任务将在可枚举集合中的所有System.Threading.Tasks.Task对象完成时完成.
完成后,任务将返回一个数组,其中包含传递给所有任务的结果Task.WhenAll
.