c#每x秒调用一个方法,但只调用一定次数

c#每x秒调用一个方法,但只调用一定次数,c#,console,timing,C#,Console,Timing,我希望在我的c#console应用程序中每隔x秒调用一次相同的方法,但我也只想调用这个方法一定次数(比如5次)。 我需要每种方法都互相配合(不能重叠) 我最大的问题是控制台应用程序在完成之前关闭 我目前的代码可以工作,但有点混乱(while循环) static void Main(字符串[]args) { for(int t=0;tx=MyMethod(x), 无效的 时间跨度0, //秒与秒之间的延迟 时间跨度从秒(5)开始; //调用的次数 而(x

我希望在我的c#console应用程序中每隔x秒调用一次相同的方法,但我也只想调用这个方法一定次数(比如5次)。 我需要每种方法都互相配合(不能重叠) 我最大的问题是控制台应用程序在完成之前关闭

我目前的代码可以工作,但有点混乱(while循环)

static void Main(字符串[]args)
{
for(int t=0;t<3;t++)
{
初始化定时器(t);
}
}
公共静态void InitTimer(int t)
{
Console.WriteLine(“Init”+t);
int x=0;
var timer=新System.Threading.timer(
e=>x=MyMethod(x),
无效的
时间跨度0,
//秒与秒之间的延迟
时间跨度从秒(5)开始;
//调用的次数
而(x<5)
{
}
timer.Dispose();
}
公共静态int-MyMethod(intx)
{
控制台写入线(“测试”+x);
//呼叫站方法
x+=1;
返回x;
}
}

有没有更简洁的方法来创建相同的功能?

当达到5时关闭计时器。如果一个方法调用花费的时间超过x秒,您希望它如何工作?你想让下一个电话立即开火吗?如果是这样的话,计时器是再次重置为5秒,还是会试图弥补失去的时间?
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;
        }
    }