微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从Task更新CollectionViewSource的Source属性?

如何解决如何从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 举报,一经查实,本站将立刻删除。