1
我不得不为.NET客户端项目使用.NET 3.5。通常我会使用.NET 4.5并使用Async/Await,但是我不能在这个项目中使用4.5。异步请求.NET 3.5
我不确定我的解决方案是否正确,但看起来很简单。基本上下面的方法将异步下载文件,并返回一个布尔值来表示成功或不成功。但在主代码中,我不确定如何在继续执行下一行代码之前等待方法的响应。
private bool DownloadJSONFile(string url)
{
bool responseStatus = false;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.BeginGetResponse(result => {
using (HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result))
{
if(response.StatusCode == HttpStatusCode.OK)
{
responseStatus = true;
}
}
}, null);
return responseStatus;
}
这里是主函数调用DownloadJSONFile
:
private void Form1_Load(object sender, EventArgs e)
{
bool a = DownloadJSONFile("http://myserver.com/clients.json");
MessageBox.Show("Download complete");
}
在消息框中显示的是请求完成之前的时刻。我理解的是完全正常的。
怎么可能等到DownloadJSONFile
完成?
这个问题我与它一起调用其他方法是,随着代码开始增长,最终会在一个完成时调用彼此的长链方法中结束。我会看看Async Bridge。谢谢。 –
我能想到的唯一有点实用的方法是创建一个类,当它完成时触发一个事件。然后,您可以在适当的时间添加事件处理程序。 – Cory