建構函式中能否呼叫非同步方法?
在嘗試將非同步程式碼整合到類別建構函式中時,這個問題經常出現。具體來說,本例的目標是在物件實例化期間呼叫 getWritings()
方法(該方法解析 JSON 資料)。
問題所在
最初,直接在建構函式中呼叫 getWritings()
並將其設為非同步方法會導致空回傳值和空的 LongListView
。嘗試透過 getWritings().Result
取得結果來解決此問題,導致 UI 執行緒阻塞。
解
建議的方法是設計應用程式以處理資料檢索的非同步特性。構造函數應設定一個視圖以指示正在下載數據,實際的數據更新應在下載完成後發生。
關於此主題的其他資源包括一篇關於非同步建構函數的博文,一篇關於MVVM 場景中非同步資料綁定的MSDN 文章,以及一篇關於非同步最佳實踐的MSDN 文章,其中強調了避免使用async void
方法的重要性。
以上是可以在建構函式中呼叫非同步方法嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!