C# c中异步post的问题
我的项目中有两个帖子,一个是异步的,第二个帖子是正常的,但依赖于帖子1 post 1以字符串形式返回成功。如果post2在post1之前响应,那么这里会发生什么呢。所以我想做的是等到Post1回复成功 我不知道该怎么做。请建议。以下是我的发帖请求 //职位1 startAsync、webClient、sPostData //职位2:这取决于职位1以上。我想后1完成之前,这回应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
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
}
});