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; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д