【发布时间】:2015-10-07 04:13:50
【问题描述】:
我有一个 Dog 类,其中包含一个 Run 方法,它可以在屏幕上移动图片:
public bool Run()
{
Point p = PictureBoxDog.Location;
while(p.X < 530)
{
int movement = Randomizer.Next(0, 3);
p.X += movement;
PictureBoxDog.Location = p;
}
if (Location == 4) //Incomplete section.
return true;
else
return false;
}
这个方法是从一个按钮点击事件中调用的,其中创建了 4 个狗对象,每个对象都调用 Run 方法:
private void button1_Click(object sender, EventArgs e)
{
Dog dog1 = new Dog(pictureDog1);
Dog dog2 = new Dog(pictureDog2);
Dog dog3 = new Dog(pictureDog3);
Dog dog4 = new Dog(pictureDog4);
dog1.Run();
dog2.Run();
dog3.Run();
dog4.Run();
}
问题是每个方法一个接一个地执行,而不是同时执行。我希望每种方法同时运行。如果我删除 while 语句,那么所有方法都会同时执行,但在 while 循环中,它们会一个接一个地执行。非常感谢有关如何解决此问题的任何建议。没有while循环的运行方法:
public bool Run() //Dog1.Run()
{
Point p = PictureBoxDog.Location;
int movement = Randomizer.Next(0, 30);
//Location += movement;
p.X += movement;
PictureBoxDog.Location = p;
if (Location == 4) //Incomplete code.
return true;
else
return false;
}
【问题讨论】:
-
添加一个计时器并从那里调用方法。这样您就不必弄乱线程,如果您不知道自己在做什么,这会导致 UI 元素出现问题。
标签: c# multithreading