Поврежденная куча в приложении Магазина Windows

У меня есть приложение для Магазина Windows, которое содержит ListBox полно предметов. Существует также возможность фильтрации этих элементов на основе определенных параметров. Например:

foreach(var item in ItemsListBox.item)
{
     ListBoxItem container = ItemsListBox.ItemContainerGenerator.ContainerFromItem(item) as ListBoxItem;
     ItemDC context = (ItemDC)container.DataContext;
     if(context.ShouldBeFiltered){
          container.Visibility = Visibility.Collapsed;
     }
     else{
          container.Visibility = Visibility.Visible;
     }
}

Этот процесс фильтрации запускается переключателями, при этом один переключатель позволяет фильтровать элементы по свойству A, а другой переключатель - по свойству B.

Моя проблема заключается в том, что если я переключаюсь между вариантами фильтрации (нажимая туда и обратно между переключателями для тестирования), в конечном итоге приложение будет аварийно завершать работу с единственной информацией:

First-chance exception at 0x776A5624 (ntdll.dll) in MyApp.exe: 0xC0000374: A heap has been corrupted (parameters: 0x776C1378).
Unhandled exception at 0x776A5624 (ntdll.dll) in MyApp.exe: 0xC0000374: A heap has been corrupted (parameters: 0x776C1378).

Я полагаю, что это связано с сборкой мусора, проходящей между фильтрами, но я не совсем понимаю, как к этому подойти. Этот тип исключения, кажется, не пойман каким-либо Try/Catch и не использует UnhandledException события ловят это либо.

Есть ли что-то, что я делаю неправильно с точки зрения перехода туда и обратно между Visibility.Visible а также Visility.Collapsed быстро, что заставило бы сборщик мусора взбеситься и попытаться получить доступ к памяти, которая принадлежит чему-то другому?

Как мне подойти к такому исключению при работе с приложениями Магазина Windows?

0 ответов

Другие вопросы по тегам