OutOfMemoryException из-за создания потока - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, Я разработала в консольном приложении игру-змейка, она работает хорошо некоторое время, но потом выбрасывает вышеупомянутое исключение, Я так понимаю происходит это из-за того, что я создаю для получения ответа с клавиатуры отдельный поток(куда двигаться змейке), этот поток инициализируется каждый раз при перерисовке змейки, в этом кроется проблема, вот хочу спросить, как лучше сделать, чтоб и змейка рисовалась и параллельно обрабатывать ответ с клавиатуры, Спасибо заранее, внизу выкладываю сам код,
Листинг программы
  1. public void DrawSnake()
  2. {
  3. bool ok = true;
  4. while (ok)
  5. {
  6. ThreadStart TStart = new ThreadStart(GetCurrentDirection);
  7. Thread MyThread = new Thread(TStart);
  8. MyThread.Start();
  9. Console.Clear();
  10. for (int i = 0; i < 10; i++)
  11. {
  12. if (snake[0].x == catchMe.x && snake[0].y == catchMe.y)
  13. RandomPosition();
  14. Console.SetCursorPosition(snake[i].x, snake[i].y);
  15. Console.ForegroundColor = ConsoleColor.Green;
  16. Console.WriteLine("*");
  17. }
  18. Thread.Sleep(50);
  19. }

Решение задачи: «OutOfMemoryException из-за создания потока»

textual
Листинг программы
  1. private void GetCurrentDirection()
  2. {
  3.      while(true)
  4.      {
  5.             info = Console.ReadKey(true);
  6.             if (info.Key == ConsoleKey.UpArrow)
  7.             {
  8.                 direction = Direction.Up;
  9.             }
  10.             else if (info.Key == ConsoleKey.RightArrow)
  11.             {
  12.                 direction = Direction.Forward;
  13.             }
  14.             else if (info.Key == ConsoleKey.LeftArrow)
  15.             {
  16.                   direction = Direction.Back;
  17.               }
  18.             else if (info.Key == ConsoleKey.DownArrow)
  19.             {
  20.                 direction = Direction.Down;
  21.             }
  22.             else if (info.Key == ConsoleKey.Escape)
  23.             {
  24.                 direction = Direction.Finish;
  25.             }
  26.       }
  27. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут