我想让数据不会在ui线程中加载,而是在后台线程中加载。 我尝试了几个谷歌的例子,但它仍然无法正常工作。多线程windows phone应用程序
ThreadPool.QueueUserWorkItem((o) =>
{
IList<Asana> asanasRepo = null;
var asanasRepository = this.GetService<IAsanasRepository>();
asanasRepo = asanasRepository.GetAllAsanas();
Asanas = asanasRepo.Select(x => new AsanasListItemViewModel
{
AsanaId = x.AsanaId,
AsanaLevel = InfrastructureHelper.GetLevel(x.AsanaLevel),
CoverImagePath = string.Format("/Content/Images/{0}", x.CoverImageFileName),
UsualAsanaTitle = x.UsualTitle,
YogaAsanaTitle = x.YogaTitle
}).ToObservableCollection();
asanasDispatcher.BeginInvoke(() =>
{
AsanasItems.Clear();
AsanasItems = (from asana in Asanas
group asana by asana.AsanaLevel into c
orderby c.Key
select new Group<AsanasListItemViewModel>(c.Key, c)
).ToObservableCollection();
});
});
的主要思路是从数据库不是在UI线程LO负载数据,但在后台,当数据将被载入它呈现到用户界面。 我试过类似上面的代码,但它不工作。 你能帮我吗? 谢谢!
什么是失败?它给你什么错误?什么线? –
没有错误,只是未在UI上呈现的项目列表。 – Alex
你确定你的绑定能用一个更简单的例子吗?另外,尝试并在UI线程上运行代码(即ThreadPool中没有)? –