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;
}
}
}