私は立ち往生し、あなたの助けが必要な作業を達成しようとしています。ダウンロードした複数の非同期Webリクエストの結果を表示します
私は、ページ上のボタンやWebリクエストからの結果を示しているDIVを持っているのVisual Studio 2015
でWebフォームのウェブサイトを作ってきました。
私は3つのURLでGetAsyncを呼び出し、3つのWebリクエストを作成しています。 Request1、Request2、Request3の名前にします。
ここで、Request1は1秒、Request2は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が完了したのであれば、私がやりたいことはあるが、ウェブページ上でその結果を示し、直ちに、次にRequest2またはRequest3が終了すると、更新Webページ、その要求の結果に
は事前
にありがとう
を次にあなたは、クライアントからの三つの異なる要求を行う必要があります。 – Fabio
@Fabioこれらは3つの異なる呼び出しです –
あなたのコードで、 'PerformSearchAsync'への最初の呼び出しは、downloadTaskがすべて完了した後にのみ応答を返します。 IIは、1つの検索タスクしか「実行」する1つのメソッドを作成することを意味していました。次に、クライアントからそのメソッドを呼び出します(ajax呼び出し)。別の3つのパラメータで別々に呼び出します。 – Fabio