Проблема с многопоточностью: закрывается программа

Рейтинг: 1Ответов: 0Опубликовано: 14.05.2023

Пишу змейку на WPF. Всё просто: сетка grid и зелёная точка (голова змеи). Хочу чтобы змейка, а для начала хотя бы её без брюшная часть, двигалась в заданном направлении, а при нажатии клавиш передвижения менялось направление её движения. Движение змейки хочу сделать в отдельный поток: змейка двигается постоянно, а в другом потоке обрабатывалось событие нажатия клавиши для смены направления.

    int x = 6;
    int y = 6;

    enum Direction
    {
        Left = 1, Right = 2, 
        Up   = 3, Down  = 4, Stop = 0
    }
    Direction DirectionMove;

    
    public MainWindow()
    {
        InitializeComponent();
        DirectionMove = Direction.Right;
        StartPosition(x, y);
        Thread moveSnake = new Thread(MoveSnake);
        moveSnake.Start();
    }
    public void MoveSnake()
    {
        Random rnd = new Random();
        int r = rnd.Next(1, 13);
        Grid.SetColumn(SnakeHead, r);
    }

Запускаю поток в MainWindow. Когда собираю проект не выдаёт никаких ошибок и пишет об успешной компиляции, но не появляется окна приложения.

Как угодно меняю код метода MoveSnake, но игра разве что может начать запускаться ненадолго и закрываться.

public void MoveSnake()
    {
        int i = 0;
        while (i < 5)
        {
            i++;
            Grid.SetColumn(SnakeHead, i);
        }
    }

Ощущение, будто после выполнения действий в потоке программа прекращает жизнь

Ответы

Ответов пока нет.