コンストラクター内で非同期メソッドを呼び出すことはできますか?
この問題は、非同期コードをクラス コンストラクターに統合しようとするときによく発生します。具体的には、この例の目的は、オブジェクトのインスタンス化中に getWritings()
メソッド (JSON データを解析する) を呼び出すことです。
問題
最初は、コンストラクター内で getWritings()
を直接呼び出して非同期メソッドにすると、戻り値が null になり、空の LongListView
が返されました。この問題を解決するために getWritings().Result
経由で結果を取得しようとすると、UI スレッドがブロックされます。
解決策
推奨されるアプローチは、データ取得の非同期的な性質を処理するようにアプリケーションを設計することです。コンストラクターは、データがダウンロードされていることを示すビューを設定する必要があり、実際のデータ更新はダウンロードの完了後に発生する必要があります。
このトピックに関するその他のリソースには、非同期コンストラクターに関するブログ投稿、MVVM シナリオでの非同期データ バインディングに関する MSDN 記事、および async void
メソッドの重要性の回避を強調する非同期のベスト プラクティスに関する MSDN 記事が含まれます。
以上がコンストラクター内で非同期メソッドを呼び出すことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。