[C#] Timer + Paint formy

0

Hej.

Mam taki problem - timer wola co jakiś czas funkcje f(), to przeprowadza pewne obliczenia, a następnie /powinna odświeżyć formę/, z kolei zdarzenie Paint formy wyrysuje na niej odpowiedni dla danych uzyskanych w funkcji f() wykres.

Robię więc tak:

System.Timers.Timer timer = new System.Timers.Timer();
timer.Elapsed += new ElapsedEventHandler(this.symuluj);            
            timer.Interval = 500; // szybkosc symulacji
            
            timer.Start();
 public void f(object source, ElapsedEventArgs e) {
 // ...
pointer.Refresh();
            pointer.Update();
            this.Refresh();
            this.Update();

gdzie pointer to dodatkowo statyczna referencja na formę... żadne z powyższych nie odświeża formy :/ z kolei w innej metodzie (nie wołanej przez timer), mogę zwyczajnie napisać this.Refresh() i jest OK.

Jak to poprawic?

0

System.Timers.Timer wywołuje zdarzenia w osobnym wątku i pewnie stąd problem. Spróbuj przeinvokować Refresh() do wątku głównego. Może być Ci też pomocny przykładowy projekt rysujący po formie.

0

Użyj timera z System.Windows.Forma (możesz komponent wrzucić na formatkę). Jego tyknięcia są wywoływane w kontekście wątku formy.

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