我正试图完成一个任务,我被困在并需要您的帮助。显示来自多个异步Web请求的结果下载
我做了一个Web窗体的网站在Visual Studio 2015年
我有一个页面上的按钮和显示来自Web请求的结果的DIV。
我在三个URL上调用GetAsync并发出3个Web请求。我们将它们命名为Request1,Request2和Request3。
现在让我们假设,Request1需要1秒,请求2采用5秒和Request3需要10秒才能获取数据。
会发生什么是该网站第一次完成所有异步任务,然后显示的数据。
我希望数据显示为首先下载的第一个显示的基础。
private async Task PerformSearchAsync()
{
HttpClient client = new HttpClient();
List<string> urlList = SetUpURLList();
IEnumerable<Task<RootObject>> downloadTasksQuery =
from url in urlList select ProcessURL(url, client);
List<Task<RootObject>> downloadTasks = downloadTasksQuery.ToList();
while (downloadTasks.Count > 0)
{
// Identify the first task that completes.
Task<RootObject> firstFinishedTask = await Task.WhenAny(downloadTasks);
// ***Remove the selected task from the list so that you don't
// process it more than once.
downloadTasks.Remove(firstFinishedTask);
// Await the completed task.
RootObject rootObject = await firstFinishedTask;
DisplayResult(rootObject);
}
}
private void DisplayResult(RootObject rootObject)
{
string s = "Name: "+rootObject.name+ " <span><img src =\"http://"+rootObject.logo+"\" alt=\"Source Logo\" style=\"width:16px;height:16px;\"></span>";
Source.InnerHtml += s;
}
所以我想要做的是,如果Request1完成立即,然后显示其网页上的结果时请求2或Request3完成更新这一要求的结果网页
预先感谢您
然后,你需要做从客户端三种不同的要求。 – Fabio
@Fabio这三个不同的调用 –
您的代码首先调用PerformSearchAsync将只在所有downloadTask完成后才会返回响应。 II意味着你创建一个“执行”只有一个搜索任务的方法。然后从你的客户端(ajax调用)分别调用这个方法和三个不同的参数 – Fabio