你好,我想不通为什么这个异步操作不会等待C#异步操作不等待wp8.1
private async void scroller_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
if (isLoadingMore)
return;
if (scroller.VerticalOffset > scrollContent.ActualHeight - (Frame.ActualHeight + 300))
await LoadMoreItems();
}
bool isLoadingMore = false;
private async Task LoadMoreItems()
{
isLoadingMore = true;
try
{
List<Items> itemsList = await App.ServiceClient.GetItems("bananas");//<-------Doesn't wait
foreach (Items in itemsList)
listView.Items.Add(c);
}
catch { }
isLoadingMore = false;
}
这是后台调用另一个异步任务
public async Task<List<Items>> GetItems(string selector)
{
HttpClient client = new HttpClient();
var request = new HttpRequestMessage()
{
RequestUri = new Uri(myUrl),
Method = HttpMethod.Get,
};
request.Headers.Add("Accept", "application/json");
List<Items> items = null;
var task = await client.SendAsync(request).ContinueWith(
async (s) =>
{
try
{
string Result = await s.Result.Content.ReadAsStringAsync();
if (s.Result.IsSuccessStatusCode)
items= JsonConvert.DeserializeObject<List<Items>>(Result);
}
catch
{ }
});
return items;
}
问题是嵌套等待或在scoll视图中。我发现this但我不认为这是事实。
请提供[MCVE](特别是 “最小” 的一部分)。到目前为止,'async void'看起来很可疑 - 很可能你对预期行为的期望与“忘却遗忘”不同。 –