napisałem program z dwoma oknami. W tym dodatkowym okienku mam kilka zmiennych. Do ich modyfikacji napisałem metodę. Problem polega na tym, że czasem (ale nie zawsze) wywołanie tej metody powoduje błąd
http://img189.imageshack.us/i/przechwytywanierf.png/
w linii, gdzie zmieniam wartości.
Doczytałem, że jest to błąd w komunikacji między wątkami. Tzn, że otworzenie okna jest w innym wątku niż, w którym zostało ono utworzone.
Jak mógłbym łatwo to rozwiązać? Dodam tylko, że w programie żadnych wątków ja nie używam, czyli pewnie cis mi takiego psikusa robi :)
Próbowałem napisać tak zwanego delegata. Do klasy okna wywoływanej dopisałem metodę:
delegate void setPoziomyValueCallback(int nr_poziomu, int poziom);
void setPoziomyValue(int i, int poziom)
{
Poziomy[i].Value = poziom;
}
i w metodzie, która ma zmieniać wartości w tym oknie napisałem:
if (this.InvokeRequired)
{
setPoziomyValueCallback poz = new setPoziomyValueCallback(setPoziomyValue);
this.Invoke(poz, new object[] { i, System.Convert.ToInt32(snr)});
else
{
int nr_snr;
try
{
nr_snr = System.Convert.ToInt32(snr);
}
catch { nr_snr = 0; }
Poziomy[i].Value = nr_snr;
}
jednak nadal dostaję błąd.
Jak mógłbym to ugryźć?