如何解决如何从Task更新CollectionViewSource的Source属性?
| 我想异步加载我的“ 0”。所以我写了这样的代码:list1 = new List<int>();
list2 = new List<int>();
Task.Factory.StartNew<Tuple<List<int>,List<int>>>(() =>
{
// Create and return tuple with 2 lists
}).ContinueWith(doneTask =>
{
list1 = doneTask.Result.Item1;
list2 = doneTask.Result.Item2;
// update UI
collectionViewSource1.source = list1;
collectionViewSource2.source = list2;
},TaskScheduler.FromCurrentSynchronizationContext());
但是此代码不起作用。
发生异常“ 2”。解决方法
DependencyObject具有线程相似性,您不能在后台线程上对其进行修改。您应该可以使用应用程序的Dispatcher来执行此操作,如下所示:
App.Current.Dispatcher.Invoke((Action)delegate
{
collectionViewSource1.Source = list1;
collectionViewSource2.Source = list2;
},null);
MSDN上的这篇文章可能会提供更多相关信息。版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。