Я собираюсь вызывать один и тот же метод каждые x секунд в моем консольном приложении c #, но я также хочу вызывать этот метод только определенное количество раз (скажем, 5). Мне нужно, чтобы каждый метод запускался один за другим (нельзя, чтобы они перекрывали друг друга). Моя самая большая проблема - закрытие консольного приложения до его завершения.
Текущий код, который у меня работает, работает довольно грязно (цикл while)
static void Main(string[] args)
{
for (int t = 0; t < 3; t++)
{
InitTimer(t);
}
}
public static void InitTimer(int t)
{
Console.WriteLine("Init" + t);
int x = 0;
var timer = new System.Threading.Timer(
e => x = MyMethod(x),
null,
TimeSpan.Zero,
//delay between seconds
TimeSpan.FromSeconds(5));
//number of times called
while (x < 5)
{
}
timer.Dispose();
}
public static int MyMethod(int x)
{
Console.WriteLine("Test" + x);
//call post method
x += 1;
return x;
}
}
Есть ли более удобный способ создать такую же функциональность?