Как завершить выполнение таймера через 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();
}