Как завершить выполнение таймера через 10 секунд C#?

using System;
using System.Threading;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {            
            TimerCallback tmCallback = CheckEffectExpiry;
            Timer timer = new Timer(tmCallback, "test", 1000, 1000);
            Console.WriteLine("Press any key to exit the sample");
            Console.ReadLine();            
        }

        static void CheckEffectExpiry(object objectInfo)
        {
            Console.WriteLine("Hello!");
        }
    }
} 

Ответы (2 шт):

Автор решения: MBo

Заведите переменную (поле класса).
При запуске таймера обнуляйте её.
В процедуре таймера увеличивайте её на 1 и проверяйте.
Если значение достигло 10, останавливайте таймер.

→ Ссылка
Автор решения: tym32167

Вызвать метод 10 раз и завершить метод через 10 секунд - вещи разные.

Вызывать 10 раз (вариант 1)

static void Main()
{
    for(int i=0; i<10; i++)
    {
        Thread.Sleep(1000);
        Console.WriteLine("Hello");
    }
}

Вызывать 10 раз (вариант 2)

static async Task Main()
{
    for(int i=0; i<10; i++)
    {
        await Task.Delay(1000);
        Console.WriteLine("Hello");
    }
}

Завершить через 10 секунд

static void Main()
{
    var end = DateTime.UtcNow.AddSeconds(10);
    
    Timer timer = null;
    
    TimerCallback tmCallback = state => {
        if (DateTime.UtcNow > end)
        {
            timer?.Dispose();
            timer = null;
            return;
        }
        Console.WriteLine("Hello!");
    };
    timer = new Timer(tmCallback, null, 1000, 1000);        
    Console.WriteLine("Press any key to exit the sample");
    Console.ReadLine();
}
→ Ссылка