ComboBox花费太长时间才能打开(COMException错误)

这是我的问题的情况:
我有一个ListBox和两个MyClass类型的项目。
MyClass有一个List<Column>集合。
在同一个窗口中的其他地方,我有一个ComboBox ,其中所选MyClass.ColumnCollection列为ItemsSource。

这是麻烦开始的地方:
我第一次打开ComboBox的弹出窗口一切都很顺利。
当我在ListBox中选择另一个项目(并且还要更改ComboBox源代码)时,需要超过10秒才能打开弹出窗口。 如果花费的时间超过60秒,则会出现以下错误:

The CLR has been unable to transition from COM context 0xf13d90 to COM context 0xf13fe0 for 60 seconds. The thread that owns the destination context/apartment is most likely either doing a non pumping wait or processing a very long running operation without pumping Windows messages. This situation generally has a negative performance impact and may even lead to the application becoming non responsive or memory usage accumulating continually over time. To avoid this problem, all single threaded apartment (STA) threads should use pumping wait primitives (such as CoWaitForMultipleHandles) and routinely pump messages during long running operations.

我谷歌搜索的错误,并且我到达的每个地方都是建议禁用抛出ContextSwitchDeadlocks,这根本就没有解决方案!

我对此进行了深入研究,发现以下COMException:

An event was unable to invoke any of the subscribers (Exception from HRESULT: 0x80040201)

我不使用线程/任务或其他,只是在ComboBox上的一个绑定。
我尝试在选择另一个项目时刷新ItemsSource,但它没有区别,因为它已经正确设置。

我试图谷歌的这个错误,但似乎没有解决这个问题。
微软为此提供了一个修补程序,但没有下载。

列表框的代码:

    <ListBox Margin="468,30,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Height="420" Width="410"
                            ItemsSource="{Binding ElementName=Window, Path=MyClassItems}"
                            SelectedItem="{Binding ElementName=Window, Path=MyClassItem}"
                            DisplayMemberPath="Name" />

组合框代码:

        <ComboBox Margin="580,490,0,0" Width="300"
                            VerticalAlignment="Top" HorizontalAlignment="Left" DisplayMemberPath="Name"
                            ItemsSource="{Binding ElementName=Window, Path=MyClassItem.Columns}"
                            SelectedItem="{Binding ElementName=Window, Path=MyClassItem.Column, Mode=OneWay}" SelectionChanged="SelectedColumn_SelectionChanged" />

SelectionChanged事件:

MyClassItem.Column = (sender as Combobox).SelectedValue as Column;

问题:
有谁知道如何防止COMException?

更新1:
增加了一些Xaml代码示例

更新2:
简化问题

更新3:
我发现真正的错误是COM异常。
用新信息更新我的问题。

更新4:
列表框中的所有对象都是完整的并存在内存中,所以不需要查询。 此外,无论组合框是否填充1个或100个项目,总是会出现等待时间。 (我测试了两个)。

链接地址: http://www.djcxy.com/p/41263.html

上一篇: ComboBox takes way too long to open (COMException Error)

下一篇: Combobox performance after changing ItemsSource