Witam
Od razu zaznaczam, że problem nie jest związany z Invoke, ani nawet z kontrolkami, lecz z wieszaniem całego GUI. ;-P Więc po kolei... Uważam, że najłatwiej będzie zrozumieć mój problem na kawałkach kodu:
class Class1
{
private void func()
{
Class2 class2Instance = new Class2();
string ToCoZwrocilWatek = class2Instance.funcWithThread();
}
}
class Class2
{
string WynikWatku;
public string funcWithThread()
{
Thread trd = new Thread(new ThreadStart(ThreadTask));
trd.IsBackground = true;
trd.Start();
return WynikWatku;
}
private void ThreadTask()
{
//tu wykonują się jakieś czasochłonne operacje
//np. łączenie z internetem itp.
WynikWatku=JegoWynik;
}
}
Gdy kod z wątku jest w funkcji wiesza mi się cały program :/ . Pierwszym rozwiązaniem jakie wpadło mi do głowy były wątki. Tylko nie bardzo wiem jak zrobić, żeby w zmiennej ToCoZwrocilWatek było faktycznie to co on mi przetworzył (np. źródło stronki). Słusznym wyjściem z tego problemu są chyba eventy, lecz czy wtedy kod mi się nie za bardzo pokomplikuje?
Myślałem też nad tym, czy da się zrobić to w drugą stronę, wszystko dzieje się w wątku głównym, a samo GUI rysowane jest w innym wątku, ale jakoś nie bardzo mogę sobie to wyobrazić...
Proszę was o pomoc, jak to zrobić?
Wątki od zawsze były dla mnie czarną magią (semafory, itp.? co to w ogóle jest?) :| .
Pozdrawiam, Wronq [!!!]
PS. jak zrobić, żeby w code kolorowało składnię C#?
PS2. Zmieniłem trochę kod, żeby było bardziej zrozumiale.