MC, 14:22 piątek, 21.06.2013 r.
Ilustracja do artykułu: .NET & Timer - Okresowe bądź jednorazowe wykonanie metody ze zdefiniowanym opóźnieniem

.NET & Timer - Okresowe bądź jednorazowe wykonanie metody ze zdefiniowanym opóźnieniem

Kilka zdań na temat wykorzystania obiektu Timer do wykonania metody po pewnym czasie, w sposób jednorazowy bądź ciągły (okresowy, cykliczny).

Do czego służy obiekt Timer?

Obiekt Timer pochodzący z przestrzeni nazw System.Threading, stworzony został w celu wykonywania okresowo wskazanej metody w nowym wątku, przy czym mamy możliwość zdefiniowania początkowego opóźnienia przed pierwszym wykonaniem, oraz interwał kolejnych wywołań. Obiekt taki tworzymy jak poniżej:
Timer timer = new Timer(
<akcja do wykonania>,
<obiekt przekazany do akcji jako argument (nullable)>,
<początkowe opóźnienie w milisekundach>,
<czas w ms między kolejnymi wywołaniami>);

To bardzo wygodny sposób na stworzenie wątku okresowo wykonującego pewne zadania.

A jak wykonać jednorazowo metodę po pewnym czasie?

Jak zauważyłem, jesto dość często stawiane pytanie. Wciąż zupełnie wygodnie będzie użyć do tego celu obiektu Timer, rzecz w tym, co należy zrobić aby wywołanie akcji, odbyło się tylko jeden raz. Z pomocą przychodzi dokumentacja, podług której, aby wyłączyć okresowe wykonywanie metody, jako czas między kolejnymi wywołaniami, należy podać wartość ujemną. Zatem mogłoby to wyglądać następująco:
public void JakasMetoda(object state)
{
// Logika
}

// ...
// --------------------------------
// ...

TimerCallback timerCallback = this.JakasMetoda;
Timer timer = new Timer(
timerCallback,
null,
TimeSpan.FromMinutes(1),
-1);

W ten sposób metoda JakasMetoda wykona się jeden raz, po minucie opóźnienia.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: