2016-09-05 20 views
-1

我想讀取XML文件並將其數據綁定到列表框。Windowphone 8.1將代碼更改爲異步任務

在頁面1中,單擊按鈕並轉到第2頁。

在頁面2中,列表框從xml文件中綁定數據。

這是從XML文件中獲取數據的代碼:

class GetData 
{ 
    public object obj_get_data(string xml_file) 
    { 
     XDocument xdoc = XDocument.Load(xml_file); 
     var list_emp = from query in xdoc.Descendants("emp") 
         select new du_lieu.thong_tin 
         { 
          Name = (string)query.Element("age"), 
          Age = (string)query.Element("age"), 
         }; 
     return list_emp; 
    } 
} 

在第2頁上NavigationHelper_LoadState我寫這篇文章的代碼來綁定數據:

private void NavigationHelper_LoadState(object sender, LoadStateEventArgs e) 
{    
    GetData gd = new GetData(); 
    object obj = gd.obj_get_data(xml_danh_sach); 
    listbox1.ItemsSource = obj; 
} 

有了這個代碼,一切正常, 但是,當點擊第1頁上的按鈕時,應用程序會延遲一秒鐘,然後轉到第2頁。

我知道我需要與異步任務和progess酒吧/環一起工作,使應用程序 像正常, 但我不知道這樣做。 每個人都可以幫我嗎?

+0

這是WPF或Windows Phone?你的標籤說了一件事,你的標題說了另一件事。在任何情況下,Stack Overflow上都有很多帖子顯示如何在'Task.Run()'中包裝同步代碼以實現異步實現。你已經看到了什麼?你有什麼嘗試?你有什麼特別的問題?請提供一個很好的[mcve]顯示所有這些內容,並準確解釋什麼會給你帶來困難。 –

+0

@PeterDuniho:在Windows Phone 8.1中 – 1234abcd

回答

0

試試這個:

class GetData 
{ 
    public async Task<object> obj_get_data(string xml_file) 
    { 
     XDocument xdoc = await XDocument.Load(xml_file); 
     var list_emp = from query in xdoc.Descendants("emp") 
         select new du_lieu.thong_tin 
         { 
          Name = (string)query.Element("age"), 
          Age = (string)query.Element("age"), 
         }; 
     return list_emp; 
    } 
} 

這:

private async Task NavigationHelper_LoadState(object sender, LoadStateEventArgs e) 
{    
    GetData gd = new GetData(); 
    object obj = await gd.obj_get_data(xml_danh_sach); 
    listbox1.ItemsSource = obj; 
}