Witajcie.
Mam przykładową pętelkę na Windows Forms, która zawiera kontrolkę pictureBox1:
for (int i = 0; i < 6; i++)
{
odtwarzaj();
zmieniaj();
Thread.Sleep(3000);
}
gdzie odtwarzaj
to funkcja odtwarzająca dźwięk, jej składnia nie jest potrzebna, natomiast zmieniaj ma taką oto postać
void zmieniaj()
{
pictureBox1.Visible = true;
Thread.Sleep(500);
pictureBox1.Visible = false;
Thread.Sleep(500);
pictureBox1.Visible = true;
Thread.Sleep(500);
pictureBox1.Visible = false;
Thread.Sleep(500);
pictureBox1.Visible = true;
Thread.Sleep(500);
pictureBox1.Visible = false;
}
Jak widać ma ona wywołać "miganie" kontrolki.
W założeniu pętla ma odegrać utwór 3-sekundowy 6 razy, podczas każdego odgrywania kontrolka ma zamigać.
Problem w tym, że gdy używam Thread.Sleep(3000) usypiam główny wątek w którym ta kontrolka została stworzona, więc uniemożliwiam sobie z nią pracę ("miganie").
Próbowałem utworzyć 2 nowe osobne wątki z wywołaniami tych funkcji, lecz nie dało to żadnych rezultatów.
Czyli w telegraficznym skrócie chcę "uśpić" wykonywanie pętli na czas odgrywania utworu zachowując kontrolę nad pictureBox'em
Męczę się z tym od wczoraj i będę wdzięczny za wszelką pomoc :)
</cpp>