Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# UI元素添加到控件集合时引发异常_C#_.net_Wpf_Multithreading_Fluent Ribbon - Fatal编程技术网

C# UI元素添加到控件集合时引发异常

C# UI元素添加到控件集合时引发异常,c#,.net,wpf,multithreading,fluent-ribbon,C#,.net,Wpf,Multithreading,Fluent Ribbon,我正在尝试在另一个线程中加载应用程序的加载项。该过程非常耗时,而且应用程序在启动时明显会冻结很长时间。该系统的工作原理如下: xml文件定义应添加到UI的控件和类型。现在,一个类读取XML并创建控件。这些是通过调用(使用主UI线程的调度程序)创建的 在本例中,我创建了一个RibbonTabItem(来自Codeplex的Fluent Ribbon)。在我将此控件添加到功能区本身之前,一切正常。即使这样,也可以通过调度程序调用。但一旦这条线路被呼叫: RibbonTabItem i = item;

我正在尝试在另一个线程中加载应用程序的加载项。该过程非常耗时,而且应用程序在启动时明显会冻结很长时间。该系统的工作原理如下:

xml文件定义应添加到UI的控件和类型。现在,一个类读取XML并创建控件。这些是通过调用(使用主UI线程的调度程序)创建的

在本例中,我创建了一个RibbonTabItem(来自Codeplex的Fluent Ribbon)。在我将此控件添加到功能区本身之前,一切正常。即使这样,也可以通过调度程序调用。但一旦这条线路被呼叫:

RibbonTabItem i = item;
uiDispatcher.Invoke(() => this._ribbon.Tabs.Add(i));
我得到以下异常堆栈跟踪:

在System.Windows.Freezable.EnsureConsistentDispatchers(DependencyObject所有者、DependencyObject子级) 在System.Windows.Freezable.OnFreezablePropertyChanged(DependencyObject旧值、DependencyObject新值、DependencyProperty属性) 位于System.Windows.Media.RenderData.PropagateChangedHandler(EventHandler处理程序,布尔添加) 位于System.Windows.UIElement.RenderClose(IDrawingContent newContent) 位于System.Windows.Media.VisualDrawingContext.CloseCore(RenderData RenderData) 位于System.Windows.Media.RenderDataDrawingContext.DisposeCore()处 位于System.Windows.Media.DrawingContext.System.IDisposable.Dispose()处 在System.Windows.Media.RenderDataDrawingContext.Close()中 在System.Windows.UIElement.Arrange(Rect finalRect)中 在MS.Internal.Helper.ArrangeElementWithSingleChild(UIElement元素,大小arrangeSize) 位于System.Windows.Controls.ContentPresenter.ArrangeOverride(大小arrangeSize) 位于System.Windows.FrameworkElement.ArrangeCore(Rect finalRect) 在System.Windows.UIElement.Arrange(Rect finalRect)中 位于System.Windows.Controls.Border.ArrangeOverride(大小最终化) 位于System.Windows.FrameworkElement.ArrangeCore(Rect finalRect) 在System.Windows.UIElement.Arrange(Rect finalRect)中 位于System.Windows.Controls.Control.ArrangeOverride(大小arrangeBounds) 位于System.Windows.FrameworkElement.ArrangeCore(Rect finalRect) 在System.Windows.UIElement.Arrange(Rect finalRect)中 位于System.Windows.Controls.Border.ArrangeOverride(大小最终化) 位于System.Windows.FrameworkElement.ArrangeCore(Rect finalRect) 在System.Windows.UIElement.Arrange(Rect finalRect)中 位于System.Windows.Controls.Grid.ArrangeOverride(大小arrangeSize) 位于System.Windows.FrameworkElement.ArrangeCore(Rect finalRect) 在System.Windows.UIElement.Arrange(Rect finalRect)中 位于System.Windows.Controls.Control.ArrangeOverride(大小arrangeBounds) 位于System.Windows.FrameworkElement.ArrangeCore(Rect finalRect) 在System.Windows.UIElement.Arrange(Rect finalRect)中 在Fluent.RibbonTabsContainer.ArrangeOverride处(大小最终化) 位于System.Windows.FrameworkElement.ArrangeCore(Rect finalRect) 在System.Windows.UIElement.Arrange(Rect finalRect)中 位于System.Windows.Controls.ScrollContentPresenter.ArrangeOverride(大小arrangeSize) 位于System.Windows.FrameworkElement.ArrangeCore(Rect finalRect) 在System.Windows.UIElement.Arrange(Rect finalRect)中 位于System.Windows.Controls.Grid.ArrangeOverride(大小arrangeSize) 位于System.Windows.FrameworkElement.ArrangeCore(Rect finalRect) 在System.Windows.UIElement.Arrange(Rect finalRect)中 位于System.Windows.Controls.Control.ArrangeOverride(大小arrangeBounds) 位于System.Windows.Controls.ScrollViewer.ArrangeOverride(大小arrangeSize) 位于System.Windows.FrameworkElement.ArrangeCore(Rect finalRect) 在System.Windows.UIElement.Arrange(Rect finalRect)中 位于System.Windows.Controls.DockPanel.ArrangeOverride(大小arrangeSize) 位于System.Windows.FrameworkElement.ArrangeCore(Rect finalRect) 在System.Windows.UIElement.Arrange(Rect finalRect)中 位于System.Windows.ContextLayoutManager.UpdateLayout()处 位于System.Windows.UIElement.UpdateLayout()处 在Fluent.RibbonTabControl.UpdateSelectedContent()处 在Fluent.RibbonTabControl.OnSelectionChanged处(SelectionChangedEventArgs e) 在System.Windows.Controls.Primitives.Selector.InvokeSelectionChanged(列表
1未选择Fos,列表
1已选择Fos)
在System.Windows.Controls.Primitives.Selector.SelectionChanger.End()中
在System.Windows.Controls.Primitives.Selector.SelectionChanger.SelectJustThisItem(ItemInfo,Boolean assumeInItemsCollection)中
在System.Windows.Controls.Primitives.Selector.OnSelectedIndexChanged(DependencyObject d,DependencyPropertyChangedEventArgs e)
位于System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
位于System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
位于System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs参数)
在System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex EntryIndex,DependencyProperty dp,PropertyMetadata,EffectiveValueEntry oldEntry,EffectiveValueEntry&newEntry,布尔强制WithDeferredReference,布尔强制WithCurrentValue,OperationType OperationType)
位于System.Windows.DependencyObject.ImpresseValue(DependencyProperty dp)
位于System.Windows.Controls.Primitives.Selector.OnItemChanged(NotifyCollectionChangedEventArgs e)
在Fluent.RibbonTabControl.onitemchanged处(NotifyCollectionChangedEventArgs e)
位于System.Windows.Controls.ItemsControl.OnItemCollectionChanged2(对象发送者,NotifyCollectionChangedEventArgs e)
位于System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(对象发送方,NotifyCollectionChangedEventArgs e)
位于System.Windows.Data.CollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs)
位于System.Windows.Controls.ItemCollection.OnViewCollectionChanged(对象发送方,NotifyCollectionChangedEventArgs e)
在System.Windows.ventManager.ListenerList
1.DeliverEvent(Obje)中