c#每x秒调用一个方法,但只调用一定次数
我希望在我的c#console应用程序中每隔x秒调用一次相同的方法,但我也只想调用这个方法一定次数(比如5次)。 我需要每种方法都互相配合(不能重叠) 我最大的问题是控制台应用程序在完成之前关闭 我目前的代码可以工作,但有点混乱(while循环)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
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;
}
}