Я вижу несколько красных флажков в вашем коде.
Создание нового потока каждый раз.Что происходит со старым потоком?Кроме того, создание новой темы для перемещения каждого автомобиля не является идеальным.
Использование br для указания того, какой автомобиль в списке следует перемещать и рисовать.Когда вы добавляете вторую машину, br теперь равно 1, поэтому теперь первая ветка Draw будет использовать list [1].Теперь у вас есть 2 потока, которые двигают 2-ю машину.Вот почему первая машина перестает двигаться, а вторая начинает двигаться быстрее.
Вызов обновления изображения Boxbox тоже не идеален.
Я бы сделал это больше так:
List<System.Windows.Forms.Timer> timers =
new List<System.Windows.Forms.Timer>();
List<Car> list = new List<Car>();
private void button1_Click(object sender, EventArgs e)
{
Car car = new Car(50, 50, 40, 40);
list.Add(car);
Timer timer = new Timer();
timer.Tick += Timer_Tick;
timer.Interval = 100;
timer.Tag = car;
timer.Start();
timers.Add(timer);
}
private void Timer_Tick(object sender, EventArgs e)
{
Car car = (Car)((sender as Timer).Tag);
car.Move();
pictureBox1.Invalidate();
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.Clear(Color.White);
foreach (Car car in list.ToArray())
{
car.DrawCar(g, Color.Blue);
}
}
Возможны другие проблемы с автомобилем. Перемещение и DrawCar.