Я создаю ловящую игру, в которой выпадают яйца. В моем подклассе Panel у меня есть этот код
public void startGame()
{
Thread t = new Thread(new ThreadStart(game));
t.Start();
}
private void game()
{
bool run = true;
int level = 1;
while (run)
{
Egg egg = dropper.selectEgg();
int speed = dropper.getSpeed(level);
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate {
this.Controls.Add(egg);
egg.setInitialLocation(dropper.selectPosition());
int x = egg.Location.X;
int y = egg.Location.Y;
while (y <= 1000)
{
egg.setCurrentLocation(x, dropper.drop(egg, speed));
y = egg.Location.Y;
}
}));
}
else
{
this.Controls.Add(egg);
egg.setInitialLocation(dropper.selectPosition());
int x = egg.Location.X;
int y = egg.Location.Y;
while (y <= 1000)
{
egg.setCurrentLocation(x, dropper.drop(egg, speed));
y = egg.Location.Y;
}
}
Thread.Sleep(3000);
}
}
Яйцо является подклассом PictureBox, и я хочу изменить его расположение в цикле, чтобы оно выглядело так, как будто яйца падают. Я использую подкласс EggDropper с этим методом:
public int drop(Egg egg, int speed)
{
int y = egg.Location.Y;
y += speed;
return y;
}
но почему-то я не вижу ни одного из выпадающих объектов Яйца. Я предполагаю, что это проблема с потоком, обращающимся к подклассу PictureBox? Но я не могу найти какое-либо решение онлайн.
Заранее большое спасибо.