private void button1_Click(object sender, EventArgs e) // utworz przypomnienie
{
Thread watek = new Thread(PorownajDaty);
watek.Start();
}
Przycisk rozpoczynający prace wątku
private void PorownajDaty() // akcja wątku
{
do
{
if (obecna_godzina.Hour == trackBar1.Value && obecna_godzina.Minute == trackBar2.Value)
{
timer1.Enabled = true;
porownaj = true;
}
} while (porownaj == false);
}
Tutaj wszystko działa cacy - sprawdzałem, timer jest domyślnie wyłączony stąd włączenie go dopiero tutaj -> włącza się więc kod działa poprawnie
private void timer1_Tick(object sender, EventArgs e) // akcja timera
{
MessageBox.Show(richTextBox1.Text, "Przypomnienie", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Wyświetla messageboxa po upływie zadanego mu czasu
private void checkBox4_CheckedChanged(object sender, EventArgs e)
{
timer1.Interval = 10000;
}
Checkbox ustawia interval timera na 10 sekund
Generalnie motyw jest taki że po naciśnięciu przycisku w tle ma działać wątek, który porównuje cały czas zadaną godzinę i minutę z obecną godziną i minutą po czym włącza timer jeśli są takie same -> timer odlicza 10 sekund i wywołuje messageboxa - ma to działać ala taki reminder
Wszystko jest okej, timer się włącza, interval dobrze ustawiony mimo wszystko po 10 sekundach żaden messagebox się nie pojawia, pytanie dlaczego? Cała operacja działa pod warunkiem, że timer nie jest włączany w wątku -> gdy włączę go z poziomu przycisku ówcześnie sprawdzając warunek normalnie pokazuje komunikat, natomiast po włączeniu go w wątku, włącza się, natomiast komunikat nigdy nie następuje.
Ps. Jakaś propozycja w jaki sposób porównywać NA BIEŻĄCO zadany czas i obecny? Chodzi mi tutaj głównie o zastosowanie czegoś innego prócz pętli do while.
Pozdrawiam, Dawid.