wpf c# кэширование страниц
Есть MainWindow - окно с авторизацией, после успешной авторизации тебя перекидывает в окно game, оттуда ты можешь попасть в окно shop, а из него обратно в game. Проблема в том, что я пытаюсь кэшировать эти страницы, но из-за этого вылезает ошибка
System.StackOverflowException: "Выдано исключение типа "System.StackOverflowException"."
как я понимаю я где-то накосячил с ссылками на страницы из-за чего оно бесконечно туда сюда переходит возможно, но я честно говоря не знаю
вот мой код Класс менеджер страниц(недоработан для shop из-за текущей проблемы)
public static class PageManager
{
public static game GameInstance;
}
MainWindow:
if (PageManager.GameInstance == null)
{
MainFrame.Navigate(PageManager.GameInstance = new game());
}
else
{
MainFrame.Navigate(PageManager.GameInstance);
}
game:
public partial class game : Page
{
// создаем страницы для перехода по ним
public Page shop = new shop();
public game()
{
InitializeComponent();
if (DataBase.IsAdmin(DataBase.account_id.ToString()))
{
AdminPanel.Visibility = Visibility.Visible;
}
}
shop:
private void back_btn_Click(object sender, RoutedEventArgs e)
{
ShopFrame.Navigate(PageManager.GameInstance);
}
Ответы (1 шт):
Для увеличения стека мне помогло:
Самый простой способ установить размер стека начиная с .NET 2.0 и Win XP - создать новый поток с желаемым размером стека:
using System.Threading;
Thread T = new Thread(threadDelegate, stackSizeInBytes);
T.Start();
Чтобы изменить размер стека всей программы, вам придется использовать editbin:
EDITBIN.EXE /STACK:<stacksize> file.exe
(Перевод ответа Andrew O'Reilly)
Это помогло мне, программа больше не зависает, только долго работает.