C# c中异步post的问题

C# c中异步post的问题,c#,webclient,C#,Webclient,我的项目中有两个帖子,一个是异步的,第二个帖子是正常的,但依赖于帖子1 post 1以字符串形式返回成功。如果post2在post1之前响应,那么这里会发生什么呢。所以我想做的是等到Post1回复成功 我不知道该怎么做。请建议。以下是我的发帖请求 //职位1 startAsync、webClient、sPostData //职位2:这取决于职位1以上。我想后1完成之前,这回应 html = oClient.Post("https://example.com" + "?"+sPostParamet

我的项目中有两个帖子,一个是异步的,第二个帖子是正常的,但依赖于帖子1

post 1以字符串形式返回成功。如果post2在post1之前响应,那么这里会发生什么呢。所以我想做的是等到Post1回复成功

我不知道该怎么做。请建议。以下是我的发帖请求

//职位1

startAsync、webClient、sPostData

//职位2:这取决于职位1以上。我想后1完成之前,这回应

html = oClient.Post("https://example.com" + "?"+sPostParameter, "");
新编辑

我使用的startAsync方法如下 startAsync、webClient、sPostData


在这里,我想等待直到结束执行

,因为我同意这应该已经适用于等待下载1您可以强制等待任务结果,因为您使用编辑和更正的sry将其声明为任务:

替换

Task<int> download1 = oClient.ProcessURLAsync(url, oWebClient, sParam);
int length1 = await download1;
或者,您可以使用以下命令强制等待:

Task.WaitAll(download1);
问候 Konstantin

如果使用关键字async,则在异步完成之前不会触发其他事件

MSDN示例帮助我很好地理解了它的工作原理

完整链接公开

这可以使用

你的代码看起来像

Task<int> download1 = await oClient.ProcessURLAsync(url, 
              oWebClient, 
              sParam).ContinueWith(
                  downloadTask =>{

                      if (downloadTask.Result == "success"){
                          var html = oClient.Post(
                              "https://example.com" + "?" + sPostParameter,
                              "");
                      } else{
                          //wait
                      }
                  });

这正是wait所做的,它等待操作完成。这到底是怎么失败的?嗨,迪维德,谢谢你的考虑。它不会在等待中等待,然后执行下一行。你能展示上面调用的完整代码吗?@Karan我们需要更多的代码,方法是如何声明的,等等。。。这是猜测now@Karan:显示的代码不会产生所描述的行为。与其模糊地描述整个代码的外观,不如展示一个完整的、最少的示例来说明问题。@KoPoCabana:根本没有更正,此代码仍在调用.Result上的wait。如果wait是一个选项,那么为什么要调用.Result呢?一般来说,使用。结果应该非常小心。
Task.WaitAll(download1);
Task<int> download1 = await oClient.ProcessURLAsync(url, 
              oWebClient, 
              sParam).ContinueWith(
                  downloadTask =>{

                      if (downloadTask.Result == "success"){
                          var html = oClient.Post(
                              "https://example.com" + "?" + sPostParameter,
                              "");
                      } else{
                          //wait
                      }
                  });