Таймер

Без доступом до компонентів форми

using System.Threading;

void Main(string[] args){

      Timer t = new Timer(F1, null, 0, 2000);   // 0 - затримка до старту, 2000 - період

      Console.ReadKey();

}

static void F1(Object o) {

      Console.WriteLine("Час: " + DateTime.Now);

      GC.Collect();    // зібрати сміття

}

Зупинити таймер

t.Dispose() - на завжди

t.Change(Timeout.Infinite , Timeout.Infinite) - можна знову запустити

Object o - об'єкт таймера, аби ни можна було керувати в F1()

Інший варіант

TimerCallback callback = new TimerCallback(F1);

Timer timer = new Timer(callback);

timer.Change(2000, 500);   // затримка, як часто

WPF з доступом до компонентів форми

using System.Threading;

     DispatcherTimer timer = new DispatcherTimer();

     timer.Interval = TimeSpan.FromSeconds(1);        // щосекунди; new TimeSpan(0, 0, 1);

     timer.Tick += F1;

     timer.Start();

int b = 1;

void F1(object sender, EventArgs e)

{

     tb1.Text = b.ToString();

     b++;

}