現在我知道我可能做錯了什麼,因爲我對異步/等待非常陌生,..但我有一個隨機問題,我不能過去。C#VS2015只是在調試http異步響應時隨機停止項目
我打電話給Google Places API(成功)並獲得結果。
Response results = await Api.SearchPlaces(lat, lon, "");
結果填充了20個位置的響應,這很好。 然後,我嘗試循環遍歷它們並將它們添加到地點列表中。
var places = new List<Place>();
foreach (var place in results.Places)
{
places.Add(place);
}
並在調試器中,因爲我打結果。 - 視覺工作室只是停止調試。沒有錯誤,它只是停止。
如果我對結果進行調試並快速到達foreach循環,我可能會通過將地點添加到我的地點列表來獲得2-3次迭代,然後停止,如果我等待10秒鐘,它會停止第二次擊中了第一個迭代。
VS剛剛停止的一點似乎是關於Google查找完成的時間..但我只是不明白爲什麼我不能將結果添加到列表以及爲什麼VS沒有理由停下來。
我使用調用API是異步和返回任務
public static async System.Threading.Tasks.Task CreateAccountsFromGPSPositions()
{
}
我知道這可能是一個簡單的異步/等待的事情,但我只是不明白爲什麼VS只是停止時,整個方法仍然有代碼需要運行..
我沒有正確處理結果?我不能只是通過的foreach就像我通常會用結果做的東西..
被稱爲搜索的方法是這樣的:
async public static Task<Response> SearchPlaces(double latitude, double longitude, string query)
{
try
{
HttpResponseMessage resp;
resp = await Client.GetAsync(String.Format("nearbysearch/json?key={0}&location={1},{2}&sensor=true&rankby=distance&keyword={3}", AppSecret, latitude, longitude, query));
if (resp.IsSuccessStatusCode)
{
return JsonConvert.DeserializeObject(await resp.Content.ReadAsStringAsync(), typeof(Response)) as Response;
}
else
{
return null;
}
}
catch
{
return null;
}
}
你將要閱讀這篇文章:https://msdn.microsoft.com/en-us/magazine/jj991977.aspx 。它將通過異步編程和錯誤處理來改變你的生活。 – Steve