我们说我有更多的Uri's。如果可以访问,我需要验证。
public RelayCommand TestConnectionCommand => new RelayCommand(async () =>
{
var res1 = await ValidateUriAsync(uri);
var res2 = await ValidateUriAsync(uri);
});
private async Task<bool> ValidateUriAsync(Uri uri)
{
try
{
var request = WebRequest.CreateHttp(uri);
var result = await request.GetResponseAsync();
return true;
}
catch (Exception e)
{
return false;
}
}
当程序第一次等待时,验证uri需要一些时间,在得到结果后,我可以在View上显示结果。然后程序接下来我验证第二个uri。我想在没有等待的情况下做到这一点。我在考虑使用Begin / EndGetResponse。我需要在View上显示每个验证的结果。验证成功/失败。
非常感谢您的建议。
答案 0 :(得分:3)
使用等待时,停止执行直到任务返回,而不是等待所有任务完成:
var task1 = ValidateUriAsync(uri);
var task2 = ValidateUriAsync(uri);
await Task.WhenAll(task1, task2);
或等到第一次出错:
var tasks = new List<Task>
{
ValidateUriAsync(), ValidateUriAsync(uri)
};
while (tasks.Any())
{
var t = await Task.WhenAny(tasks);
if (t.IsFaulted)
{
//Faulty
break;
}
tasks.Remove(t);
}