我正試圖完成一個任務,我被困在並需要您的幫助。顯示來自多個異步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