Witam,
dopiero raczkuje z C# i mam takie pytanie czy da się jakoś w łatwy sposób uruchomić parę funkcji w jednym czasie ( a nie jedna po drugiej )? tzn.
private void button1_Click(object sender, EventArgs e)
{
pierwszy.Run();
drugi.Run();
trzeci.Run();
czwarty.Run();
}
Czyli chciałbym aby " pierwszy.Run();drugi.Run();trzeci.Run();czwarty.Run();" zostały uruchomione w jednym czasie. Czy do tego powinienem użyć Parallel ?
Z góry dziękuje za pomoc i odpowiedzi.
EDIT.
Jak już kolega niżej wspominał można to rozwiązać przy pomocy multiwątkowości.
Tylko chyba nie za bardzo łapie jak to ma chodzić ponieważ u mnie ciągle idzie jedna pętla za drugą.
Mam taki przycisk który powoduje uruchomienie funkcji na obiektach.
private void button1_Click(object sender, EventArgs e)
{
thr = new Thread(() =>pierwszy.Run());
thr1 = new Thread(() => drugi.Run());
thr.Start();
thr1.Start();
}
Po przerobieniu na task wygląda tak :
private void button1_Click(object sender, EventArgs e)
{
Task t1 = Task.Factory.StartNew(() => pierwzy.Run());
Task t2 = Task.Factory.StartNew(() => drugi.Run());
}
A tutaj wygląd funkcji :
public void Run() {
if (PictureBox.InvokeRequired) {
PictureBox.BeginInvoke(new MethodInvoker(Run));
}
else
{
MessageBox.Show("Ikona:" + PictureBox.Name);
for (lokacjaPsa = 0; lokacjaPsa < dlugoscToru; dodaj = random.Next(1, 40) )
{
lokacjaPsa += dodaj;
PictureBox.Left += dodaj;
Thread.Sleep(1);
}
}
}
Co chce osiągnąć ? Chcę aby te 2 obiekty tak jakby się ścigały ze sobą w jednym czasie.
Proszę o pomoc.
Z góry dziękuję.