你好,我想不通爲什麼這個異步操作不會等待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'看起來很可疑 - 很可能你對預期行爲的期望與「忘卻遺忘」不同。 –