Heim >Backend-Entwicklung >C++ >Können asynchrone Methoden innerhalb von Konstruktoren aufgerufen werden?
Können asynchrone Methoden im Konstruktor aufgerufen werden?
Dieses Problem tritt häufig auf, wenn versucht wird, asynchronen Code in Klassenkonstruktoren zu integrieren. Das Ziel dieses Beispiels besteht insbesondere darin, die Methode getWritings()
(die JSON-Daten analysiert) während der Objektinstanziierung aufzurufen.
Das Problem
Anfangs führte der direkte Aufruf von getWritings()
im Konstruktor und die Umwandlung in eine asynchrone Methode zu einem Null-Rückgabewert und einem leeren LongListView
. Der Versuch, das Ergebnis über getWritings().Result
abzurufen, um dieses Problem zu beheben, führt zur Blockierung des UI-Threads.
Lösung
Der empfohlene Ansatz besteht darin, Ihre Anwendung so zu gestalten, dass sie die asynchrone Natur des Datenabrufs berücksichtigt. Der Konstruktor sollte eine Ansicht einrichten, die anzeigt, dass die Daten heruntergeladen werden, und die eigentliche Datenaktualisierung sollte nach Abschluss des Downloads erfolgen.
Zu den weiteren Ressourcen zu diesem Thema gehören ein Blog-Beitrag zu asynchronen Konstruktoren, ein MSDN-Artikel zur asynchronen Datenbindung in MVVM-Szenarien und ein MSDN-Artikel zu asynchronen Best Practices, in dem die Vermeidung async void
der Bedeutung von Methoden hervorgehoben wird.
Das obige ist der detaillierte Inhalt vonKönnen asynchrone Methoden innerhalb von Konstruktoren aufgerufen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!