Windowphone 8.1将代码更改为异步任务

时间:2016-09-05 06:02:23

标签: c# wpf windows-phone-8.1

我想读取XML文件并将其数据绑定到列表框。

在第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页上的点击按钮时,app会延迟一秒,然后再转到第2页。

我知道我需要使用异步任务和progess bar / ring来制作应用程序 像平常一样 但我不知道该怎么做。 每个人都可以帮助我吗?

1 个答案:

答案 0 :(得分: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;
}