Ho una classe Cane con un metodo Run che si suppone di spostare le immagini sullo schermo:Metodi esecuzione contemporaneamente
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;
}
Questo metodo viene chiamato da un evento click del pulsante in cui vengono creati 4 oggetti cane e il ogni oggetto chiama il metodo 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();
}
Il problema è che ciascun metodo viene eseguito uno alla volta, non contemporaneamente. Voglio che ogni metodo sia eseguito allo stesso tempo. Se rimuovo l'istruzione while, allora tutti i metodi vengono eseguiti allo stesso tempo, ma con il ciclo while, vengono eseguiti uno dopo l'altro. Qualsiasi suggerimento su come risolvere questo problema è molto apprezzato. metodo eseguito senza ciclo 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;
}
Aggiungere un timer e chiamare i metodi da lì. Quindi non dovrai fare confusione con i thread, che causano problemi con gli elementi dell'interfaccia utente se non sai cosa stai facendo. –