需要帮助等待异步web客户端post响应

本文关键字:客户端 post 响应 web 异步 帮助 等待 | 更新日期: 2023-09-27 18:08:41

嗨,我是张贴到一个url使用以下方法。这对我来说很好。我在里面创建了5个任务

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());

等等,等待任务5。是否有任何方法使用Task来执行此代码。请建议

需要帮助等待异步web客户端post响应

你可以尝试使用这篇文章中给出的解决方案

你需要将你的条件作为谓词传递给这个方法。

假设lst_tasks包含所有的任务,您可以这样做:

await WhenAny(lst_tasks, s => s == "START");
当任何任务返回START时,将停止等待。