Witam
Otóż podczas pisania programiku w WinForms natrafiłem na taki projektowy problem ( nie wklejam całego tylko taki skrót )
private Object jakisObjekt=new object();
void WykonajOperację
{
Task t = new Task(()=>
{
this.jakisObjekt = objektKlasy.długotrwałaMetoda();
});
t.Start();
}
void ToMaSięWykonaćPoTasku()
{
//Kod zmieniający Enable pewnych kontrolek,
//tutaj jest niezbędny jakiśObjekt
}
WykonajOperację odpala się wtedy, gdy button zostanie kliknięty. Na tasku jest odpalana pewna metoda która wymaga trochę czasu ( nie chcę zawieszać GUI ). I tutaj mam pytanie. Jak odpalić na wątku głownym ( wątku GUI ) metodę ToMaSięWykonaćPoTasku ? Chciałbym jak najbardziej uniknąć this.Invoke(). Czy jest możliwe zarejestrowanie jakiegoś zdarzenia po zakończeniu tasku który zostanie odpalony w wątku głównym ( próbowałem stworzyć private event i wywoływać na końcu task'u ale i tak wywalało błąd dotyczący operacji międzywątkowych)
Proszę o pomoc
Pozdrawiam
Astrocyt