Dzień dobry,
mam utworzoną poniższą metodę:
public void SprawdCzyNowaWiadomosc(ToolStripStatusLabel kontrolka)
{
int licznik = 0;
licznik = Convert.ToInt32(Polecenia.WykonajSQLSelect("SELECT COUNT(*) FROM komunikacja WHERE status_przeczytania = 0 AND iduzytkownik = " + Polecenia.PobierzAktualneIDUzytkownika()));
if (licznik > 0)
{
kontrolka.Image = global::Glowne_Okno.Properties.Resources.nowa_wiadomosc;
kontrolka.ForeColor = Color.Red;
kontrolka.BorderStyle = System.Windows.Forms.Border3DStyle.Raised;
kontrolka.Text = " - Masz nową wiadomość -";
// Thread.Sleep(5000);
}
else
{
kontrolka.Image = global::Glowne_Okno.Properties.Resources.brak_nowej_wiadomosci;
kontrolka.ForeColor = Color.Black;
kontrolka.Text = " - Brak nowej wiadomości -";
}
}
którą wykonuje w głównej metodzie za pomocą poniższego kodu:
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
System.Threading.Thread.Sleep(5000);
SprawdCzyNowaWiadomosc(status_nowej_wiadomosci);
});
Celem powyższego kodu jest uruchomienie w oddzielnym wątku metody SprawdCzyNowaWiadomosc
i powtarzanie jej co 5 sekund.
Jednak podczas uruchomienia programu w trybie debugowania wyświetla mi się komunikat:
System.InvalidOperationException: Nieprawidłowa operacja między wątkami: do formantu 'Kontrolka_Zalogowany_Uzytkownik uzyskiwany jest dostęp z wątku innego niż wątek, w którym został utworzony.
Błąd wystąpił przy tej linijce kodu:
kontrolka.Image = global::Glowne_Okno.Properties.Resources.brak_nowej_wiadomosci;