OutOfMemoryException из-за создания потока - C#
Формулировка задачи:
Здравствуйте,
Я разработала в консольном приложении игру-змейка, она работает хорошо некоторое время, но потом выбрасывает вышеупомянутое исключение, Я так понимаю происходит это из-за того, что я создаю для получения ответа с клавиатуры отдельный поток(куда двигаться змейке), этот поток инициализируется каждый раз при перерисовке змейки, в этом кроется проблема, вот хочу спросить, как лучше сделать, чтоб и змейка рисовалась и параллельно обрабатывать ответ с клавиатуры,
Спасибо заранее, внизу выкладываю сам код,
Листинг программы
- public void DrawSnake()
- {
- bool ok = true;
- while (ok)
- {
- ThreadStart TStart = new ThreadStart(GetCurrentDirection);
- Thread MyThread = new Thread(TStart);
- MyThread.Start();
- Console.Clear();
- for (int i = 0; i < 10; i++)
- {
- if (snake[0].x == catchMe.x && snake[0].y == catchMe.y)
- RandomPosition();
- Console.SetCursorPosition(snake[i].x, snake[i].y);
- Console.ForegroundColor = ConsoleColor.Green;
- Console.WriteLine("*");
- }
- Thread.Sleep(50);
- }
Решение задачи: «OutOfMemoryException из-за создания потока»
textual
Листинг программы
- private void GetCurrentDirection()
- {
- while(true)
- {
- info = Console.ReadKey(true);
- if (info.Key == ConsoleKey.UpArrow)
- {
- direction = Direction.Up;
- }
- else if (info.Key == ConsoleKey.RightArrow)
- {
- direction = Direction.Forward;
- }
- else if (info.Key == ConsoleKey.LeftArrow)
- {
- direction = Direction.Back;
- }
- else if (info.Key == ConsoleKey.DownArrow)
- {
- direction = Direction.Down;
- }
- else if (info.Key == ConsoleKey.Escape)
- {
- direction = Direction.Finish;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д