Как реализовать многопоточность с передачей по ссылке?

Я имею проблему c построением кода. С многопоточностью работаю впервые. Думаю что то не правильно понимаю. Логика такова что перебирая постоянно enymy.Walk я реализую передвижение персонажей не зависящих от пользователя. А создавая обьект Player я создаю пользователя который реализует передвижение.

using System;
using System.Collections.Generic;
using System.Threading;

namespace ConsoleGame_epam
{
    class Program
    {
        
        private static Wall wall;

        static void Main(string[] args)
        {
            Wall wall = new Wall(15, 15);
            wall.Drow();
            List<Enemy> koll = new List<Enemy>();
            //Enemy enemy1 = new Enemy();
            for (int i = 0; i < 5; i++)
            {
                //    enemy1.Write(ref wall);
                koll.Add(new Enemy());
            }
            foreach (Enemy enemy in koll)
            {
                enemy.Write(ref wall);

            }
            Thread myThread = new ParameterizedThreadStart(func);
            myThread.Start();
            Player player = new Player(ref wall);
            
            


            //while (true)
            //{
            //    foreach (Enemy enemy in koll)
            //     {
            //        enemy.Walk(ref wall);
            //    }
            //}

            
        }
        static void func(IEnumerable<Enemy> koll)
        {
            while (true)
            {
                foreach (Enemy enemy in koll)
                {
                    enemy.Walk(ref wall);
                }
            }
        }
    }
}

Ответы (0 шт):