嗨,我張貼到使用以下方法的網址。這對我來說可以。我在這裏創建了五個任務。需要幫助,在等待異步webclient後響應
private async Task CreateMultipleTasksAsync(string url, ExtendedWebClient oExtendedWebClient, string sParam)
{
try
{
Task<string> download1 = oExtendedWebClient.ProcessURLAsync(url, oExtendedWebClient, sParam);
Task<string> download2 = oExtendedWebClient.ProcessURLAsync(url, oExtendedWebClient, sParam);
Task<string> download3 = oExtendedWebClient.ProcessURLAsync(url, oExtendedWebClient, sParam);
Task<string> download4 = oExtendedWebClient.ProcessURLAsync(url, oExtendedWebClient, sParam);
Task<string> download5 = oExtendedWebClient.ProcessURLAsync(url, oExtendedWebClient, sParam);
lst_tasks1.Add(download1);
lst_tasks2.Add(download2);
lst_tasks3.Add(download3);
lst_tasks4.Add(download4);
lst_tasks5.Add(download5);
// Await each task.
Result1 = await download1;
Result2 = await download2;
Result3 = await download3;
Result4 = await download4;
Result5 = await download5;
}
catch (Exception ex)
{
ErrorLog.createLog("ex.StackTrace = " + ex.StackTrace + " ex.tostring = " + ex.ToString());
}
}
我需要實現的是,如果任何任務返回包含字符串「START」字不再等待,繼續..
我這樣做是如下的方式:
Task.WaitAll(lst_tasks1.ToArray());
if (Result1.ToLower().Contains("START") && !Result1.Contains(sTextSearch))
{
goto call2;
}
else
{
worker.ReportProgress(0, "Waiting for tasks2");
Task.WaitAll(lst_tasks2.ToArray());
等等waitng達到任務5. 有沒有辦法做這個代碼使用Task.waitany請建議
嘿,新手!歡迎來到StackOverflow,也被稱爲SO。這個地方非常嚴格,如果你不這樣做,你將無法在這個世界上生存。我們不是在這裏寫你的代碼。提出一個特定的問題,例如「爲什麼會發生這種情況?」。 SO在這裏,所以你可以問一個問題,而不是要求我們寫代碼/給你一個教程的合適的地方。 –
我已經發布我的代碼,我已經做了。只需要更好的方式來實現這一點。 –