wątek - sprawdzanie czasu działania

0

Na głównej formie mam button po którego naciśnięciu uruchamiana jest funkcja (prosta pętla) w osobnym wątku. Jak sprawdzić czas działania tej pętli (wątku) i wyświetlić tą wartość na label na głównej formie? Projekt robiony w Visual C#.

0

przed petla zapisac aktualny datoczas / uruchomic stoper
wykonac petle
po niej pobrac aktualny datoczas, -= poprzedni / zatrzymac stoper i sprawdzic
wyslac komunikat do okna z informacja ile czasu uplynelo
w reakcji na komuniakt, zmienic tresc labelki

dwa ostatnie punkty mozesz zwykle zmiazdzyc do postaci a'la:
if(labelka.InvokeRequired) okno.labelka.Invoke( () => okno.labelka.Text = wartosc.ToString() ); //*
else okno.labelka.Text = wartosc.ToString(); //**

//* - nakaz wywolania delegatu poprzez Invoke robi dokladnie to, co dwa ostatnie punkty
//** - a tak to wyglada gdy FrameWork uzna ze Invoke nie jest potrzebny

ps. nie musze mowic ze watek musi miec dostep do obiektu okna, i ze albo musi miec dostep do 'labelka', albo trzeba sobie wystawic w oknie odpowiednia metode publiczna?

0

no właśnie to co napisałeś to wiem, a mówić masz właśnie o tym w ps :) u mnie wyskakuje błąd że wątek próbuje uzyskać do elementu innego wątku którego nie jest właścicielem (komunikat w tym stylu).

0

tak wiec napisalem co nastepuje:

quetzalcoatl napisał(a)

wyslac komunikat do okna z informacja ile czasu uplynelo //<-przedostatni punkt
w reakcji na komuniakt, zmienic tresc labelki //<-ostatni punkt

dwa ostatnie punkty mozesz zwykle zmiazdzyc do postaci a'la:
if(okno.labelka.InvokeRequired) okno.labelka.Invoke( () => okno.labelka.Text = wartosc.ToString() ); //*
else okno.labelka.Text = wartosc.ToString(); //**

** - nakaz wywolania delegatu poprzez Invoke robi dokladnie to, co dwa ostatnie punkty oznaczone na gorze..
//
* - a tak to wyglada gdy FrameWork uzna ze Invoke nie jest potrzebny

1 użytkowników online, w tym zalogowanych: 0, gości: 1