这一切工作,到目前为止,但有两件事情打扰我,我想我使用了错误的方式如何等待任务完成Task.WhenAll?
问题#1 - 我只是想返回一个字符串,但我似乎被迫返回一个字符串数组。我怎么才能让这个返回一个字符串?
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.WhenAny()'或直接等待一个任务?如果你只想等待一个任务然后等待它。 – Fabjan