Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 线程化和创建ObservableCollection_C#_Wpf_Multithreading_Observablecollection - Fatal编程技术网

C# 线程化和创建ObservableCollection

C# 线程化和创建ObservableCollection,c#,wpf,multithreading,observablecollection,C#,Wpf,Multithreading,Observablecollection,我想解释一下C#(WPF)在代码背后是如何工作的。 情况(为了简单起见,显然是假设的): 在UI线程上,我们创建设置对象。它有一个变量: public ObservableCollection<Something> collection; <ItemsControl ItemsSource="{Binding Settings.collection}" 然后,哪个会执行以下操作: Settings.Modify() { collection =

我想解释一下C#(WPF)在代码背后是如何工作的。 情况(为了简单起见,显然是假设的):

在UI线程上,我们创建设置对象。它有一个变量:

public ObservableCollection<Something> collection;
<ItemsControl ItemsSource="{Binding Settings.collection}"
然后,哪个会执行以下操作:

Settings.Modify()
{
    collection = new ObservableCollection<Something>();
    collection.Add(...)
}

函数是单独调用的,如果UI线程试图访问此集合,它会做什么?

问题实际上根本不是
可观察的集合
,而是
这是否回答了您的问题<代码>在另一个线程中新建ObservableCollection
是一个问题,请不要在另一个线程中执行此操作。您可以通过dispatcher访问该部分,以便在UI线程中执行。它回答了这个问题,即正确的解决方案是什么。由于链接的问题,我已经解决了这些问题,但我仍然对此感到好奇:如果集合=新的ObservableCollection();函数是单独调用的,如果UI线程试图访问此集合,它会做什么?感谢您提供的详细答案,这将清除它!
<ItemsControl ItemsSource="{Binding Settings.collection}"
collection = new ObservableCollection<Something>();