Я пытаюсь получить данные в асинхронном методе, а затем использовать его.Но, как я вижу, вместо того, чтобы ждать подготовки данных, делается попытка использовать их слишком рано, когда данные еще пусты.Как я могу это исправить?Спасибо.
// In YouTubeViewModel class
async public Task<List<YouTubeItem>> GetChannelData()
{
try
{
using (var httpClient = new HttpClient())
{
var videoIds = new List<string>();
var json = await httpClient.GetStringAsync(channelUrl);
// Deserialize our data, this is in a simple List format
var response = JsonConvert.DeserializeObject<YouTubeApiListRoot>(json);
// Add all the video id's we've found to our list.
videoIds.AddRange(response.items.Select(item => item.id.videoId));
// Get the details for all our items
Items = await GetVideoDetailsAsync(videoIds);
}
}
catch (Exception ex)
{
var ms = ex;
}
return Items;
}
...
YouTubeViewModel vm = new YouTubeViewModel();
var blah = vm.GetChannelData(); // Items collection returned is empty, as it is called right after executing using (var httpClient = new HttpClient())
Добавлено:
Я пытался использовать await перед вызовом GetChannelData ().Мне пришлось сделать метод, который он вызывается из асинхронного, так что это то, что у меня сейчас:
async Task<List<YouTubeItem>> GetData()
{
YouTubeViewModel vm = new YouTubeViewModel();
var blah = await vm.GetChannelData();
return blah;
}
...
var blah = GetData();
И у меня та же проблема.