dzieki za propozycje :)... zaczynam sie przygladac :)...
ale walcze jeszcze z tym Invoke :)... zastosowalem to w dwoch miejscach... w jednym dziala bez problemu :)... a w drugim czasami :D...
kod mam taki...
private delegate void LogDelegate(String s, Urzadzenie u, Kierunek k);
public void LogWriteLine(String s, Urzadzenie u, Kierunek k)
{
if (InvokeRequired)
{
BeginInvoke(new LogDelegate(LogWriteLine), new object[] { s, u, k });
return;
}
/*czesc kodu odpowiedzialna za aktualizaje RichTextBox*/
}
funkcja LogWriteLine wywolywana jest w innym watku poprzez zdarzenie...
public delegate void LogujDelegate(String s, Urzadzenie u, Kierunek k);
/*...*/
public event LogujDelegate LogDel;
protected void Loguj(String s, Urzadzenie u, Kierunek k)
{
if (LogDel != null)
LogDel(s, u, k);
}
a w glownej formie "ustawiam" to zdarzenie tak...
LogujDelegate ld; //jako pole klasy
/*...*/
ld = new LogujDelegate(logi_form.LogWriteLine);
tab[0].LogDel += ld;
a sprawa prezentuje sie tak, ze bez zmian w kodzie, dla tej samej kompilacji, dzialanie programu czasami zostaje przerwane, przez blad:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll
Additional information: Nieprawidłowa operacja między wątkami: do formantu 'k_richTextBox' uzyskiwany jest dostęp z wątku innego niż wątek, w którym został utworzony.
a czasami nie... z tego co zaobserwowalem (czysto empiryczne badania ;))... program ma zdecydowanie wieksze szanse wykonac sie bez tego bledu gdy forma w ktorej uaktualniam k_richTextBox jest widoczna :)... i nie mam pojecia czemu to nie dziala :(... i czy rzeczywiscie widocznosc formy ma wplyw na ten blad... czy ma ktos jakis pomysl??
EDIT:
zaobserwowalem cos wiecej... blad nieprawidlowej operacji miedzy watkami nie przerywa dzialania gdy forma jest wyswietlana... ale raczej wystarczy by byla choc raz wyswietlona przed wywolaniem funkcji LogWriteLine... czyli, wystarczy, ze w czasie inicjalizacji programu wykonam:
logi_form.Show();
logi_form.Hide()
i juz nie mam tego bledu (w sensie: przy kilku probach nie pojawil sie :D)... jakos to dla mnie ta zaleznosc "grubymi nicmi szyta"... o co tu chodzi, czemu to tak dziala??