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