Ich habe eine Funktion (unten), die ich Daten von einer API abrufen. Wenn ich einen Haltepunkt an der Zeile festlege, die ihn deserialisiert, kann ich sehen, dass er mit Daten gefüllt ist, die groß sind.ContinueWith nicht warten auf Aufgabe zu vervollständigen
Wenn ich weiter mache, geht es in die zweite Funktion (unten) und es wird ein Fehler ausgegeben. Der Fehler sagt daneben Not yet computed
und wirft daher eine Ausnahme auf.
Wenn ich es mit einer kleinen Liste mache, funktioniert es gut (ich nehme an, es ist eine kleine Menge von Daten).
Wie ist das möglich, wenn ich ContinueWith
(Warten auf die Aufgabe) verwenden?
public static async Task<Data> GetAllCardsInSet(string setName)
{
setName = WebUtility.UrlEncode(setName);
var correctUri = Path.Combine(ApiConstants.YugiohGetAllCardsInSet, setName);
Console.WriteLine();
using (var httpClient = new HttpClient())
{
var response =
await httpClient.GetAsync(correctUri);
var result = await response.Content.ReadAsStringAsync();
var cardData = JsonConvert.DeserializeObject<CardSetCards>(result);
for (int i = 0; i < cardData.Data.Cards.Count; i++)
{
cardData.Data.Cards[i] = FormatWords(cardData.Data.Cards[i]);
}
return cardData.Data;
}
}
private void GetYugiohCardsAndNavigate(string name)
{
var cardSetData = YugiohRequester.GetAllCardsInSet(_selectedCardSet.Name).ContinueWith((result) =>
{
//var cards = await YugiohRequester.GetAllCardsInSet(_selectedCardSet.Name);
try
{
this.mainPage.NavigateToYugiohCardListPage(result.Result);
}
catch (Exception e)
{
HelperFunctions.ShowToastNotification("Trading Card App", "Sorry, we could not fetch this set");
}
});
}
Was passiert wird, wenn Sie vermeiden 'ContinueWith' warten nur' GetAllCardsInSet' Methode? – kat1330
Gibt mir eine null-Referenz Ausnahme –
Können Sie bitte untersuchen, was passieren wird, wenn Sie 'awarte Task.FromResult (cardData.Data)' statt 'cardData.Data' zurückgeben. – kat1330