none
FatalExecutionEngineError RRS feed

  • Вопрос

  • [WPF] Имеется главное окно, которое содержит TabControl с двумя вкладками. На первой вкладке разные элементы, а на второй - список всех дочерних окон приложения, нарисованных в уменьшенном виде с помощью VisualBrush. Примерно так это выглядит
    <Window.Resources>
            <DataTemplate DataType="{x:Type Window}"  x:Key="WindowTemplate">
                <StackPanel>
                    <Rectangle Height="100" Width="100">
                        <Rectangle.Fill>
                            <VisualBrush Visual="{Binding}"/>
                        </Rectangle.Fill>
                    </Rectangle>
                    <TextBlock Text="{Binding Path=Title}"/>
                </StackPanel>
            </DataTemplate>
        </Window.Resources>
    ...
    <ListBox 
                        x:Name="lbxWindows" 
                        ItemTemplate="{StaticResource WindowTemplate}"
                        MouseDoubleClick="lbxWindows_MouseDoubleClick"
                        Background="Transparent"
                                <ListBox.ItemsPanel>
                                    <ItemsPanelTemplate>
                                        <WrapPanel/>
                                    </ItemsPanelTemplate>
                                </ListBox.ItemsPanel>
                  	</ListBox>
    В классе этого же главного окна определен метод для обновления списка при создании других дочерних окон. Он вызывается в конструкторах дочерних окон при их создании
            public void RebuildWindowList()
            {
                List<Window> windows = new List<Window>();
                foreach (Window window in Application.Current.Windows)
                {
                    if (window == this)
                    {
                        continue;
                    }
                    windows.Add(window);
                }
                lbxWindows.ItemsSource = windows;
            }
    Когда запускаю приложение - всё прекрасно работает. При создании окон - они добавляются в список, при изменении их содержимого это же отображается и в списке главного окна. Но в какой-то момент после работы с программой  при попытке переключения с первой вкладки TabControl'a на вкладку со списком окон выскакивает такое исключение.

    FatalExecutionEngineError:
    The runtime has encountered a fatal error. The address of the error was at 0x59156f31, on thread 0x900. The error code is 0x80131623. This error may be a bug in the CLR or in the unsafe or non-verifiable portions of user code. Common sources of this bug include user marshaling errors for COM-interop or PInvoke, which may corrupt the stack.

    Ничего особо опасного я в методах окон не делаю, а также не могу уловить никакой связи после каких действий возникает такое исключение, хотя есть предположение, что всё приложение падает, когда я обновил содержимое окон по результатам работы элемента BackgroundWorker... После этого переход на вкладку со списком окон вызывает исключение почти наверняка, хотя не уверен. Есть идеи?
    • Перемещено Siddharth Chavan 1 октября 2010 г. 22:43 MSDN Forums Consolidation (От:Visual C#)
    11 января 2010 г. 10:13