Timer w wątku innym niż roboczy

0

Jak zrobić żeby obsługa timera była w innym wątku niż wątek główny ? Próbowałem zadeklarować w wątku innym niż roboczy timer i ustawić jego funkcję obsługi zdarzenia. Niestety timer nie wchodził do obsługi zdarzenia. Wyglądało to mniej więcej tak:

//tutaj start wątku pobocznego
T1 = new System.Threading.Thread(new System.Threading.ThreadStart(serialPort1_DataReceived));
T1.Start();

//tutaj wątek poboczny
private void serialPort1_DataReceived()
{
System.Windows.Forms.Timer SerialPortTimer = new Timer();
SerialPortTimer.Tick += new EventHandler(SerialPortGetTick);
SerialPortTimer.Interval = 5;
SerialPortTimer.Start(); //start timera zczytujacego
}

no i do funkcji SerialPortGetTick() (głupia nazwa :P ) nie wchodzi. Prawdopodobnie Timer przestaje w ogóle istnieć po zakończeniu tego wątku... Nie wiem jak do tego podejść żebym miał obsługe timerka w wątku pobocznym :/

0

O ile wiem to timer musi byc w głównym wątku - ale pewien nie jestem, może pod .NET jest inaczej (chociaz watpie)

0

Pozbądź się wątku i użyj System.Threading.Timer, jego tyknięcia automatycznie obsługiwane są w osobnym wątku.

0

Miałem podobny problem ale znalazłem coś innego Timer z System.Timers.Timer . On też działa w oddzielnym wątku, a ma praktycznie te wszystkie rzeczy które Timer z System.Windows.Forms.Timer.

Chyba że ma jakieś wady o których nie wiem. Co możecie na ten temat powiedzieć?

0

[b]Może poczytaj na MSDN?![/b]...

0
worm87 napisał(a)

Chyba że ma jakieś wady o których nie wiem. Co możecie na ten temat powiedzieć?

najwazniejsze: bedziesz mial problemy z synchronizacja i dostepem do obiektow GUI. kurde, sprobuj to sam natychmiast zobaczysz

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