总结:我想在构造函数中调用异步方法。这可能吗?
细节:我有一个名为getwritings()
的方法,用于解析JSON数据。如果我在async
方法中调用getwritings()
并将await
放在它的左边,一切都可以正常工作。然而,当我在我的页面中创建一个LongListView
并试图填充它时,我发现getWritings()
令人惊讶地返回null
,而LongListView
为空。
为了解决这个问题,我尝试将getWritings()
的返回类型更改为Task<List<Writing>>
,然后通过getWritings().Result
在构造函数中检索结果。然而,这样做的结果是阻塞UI线程。
public partial class Page2 : PhoneApplicationPage
{
List<Writing> writings;
public Page2()
{
InitializeComponent();
getWritings();
}
private async void getWritings()
{
string jsonData = await JsonDataManager.GetJsonAsync("1");
JObject obj = JObject.Parse(jsonData);
JArray array = (JArray)obj["posts"];
for (int i = 0; i < array.Count; i++)
{
Writing writing = new Writing();
writing.content = JsonDataManager.JsonParse(array, i, "content");
writing.date = JsonDataManager.JsonParse(array, i, "date");
writing.image = JsonDataManager.JsonParse(array, i, "url");
writing.summary = JsonDataManager.JsonParse(array, i, "excerpt");
writing.title = JsonDataManager.JsonParse(array, i, "title");
writings.Add(writing);
}
myLongList.ItemsSource = writings;
}
}