我想有一个定时器,它的间隔考虑回调调用时间。C#定时器考虑回调时间
例如,如果定时器间隔是1000毫秒,回调invokation需要大约500毫秒,然后 T0 = 0,T1 = 1500,T2 = 3000
显然我不想存储invokation时间(或它的平均)在一个领域,我希望它能够尽可能完美地工作。
我有点解决它,但它看起来很糟糕。
System.Timers.Timer timer = new System.Timers.Timer(1000);
timer.Elapsed += (sender, args) =>
{
timer.Stop();
Console.WriteLine(args.SignalTime);
Thread.Sleep(500); //instead!!!, there is something with Db and logistics.. no really a thread sleep
timer.Start();
};
timer.Start();
它是唯一的解决方案还是在C#中有任何内置功能?
这看起来完全等同于''Sleep'(1000)'运行'Thread',最后。 – Sinatr
请忽略线程在调用中的睡眠。 Thread.sleep isnt释放线程池中的线程,同时定时器处理线程。 –
我认为@Sinatr的意思是,你想要的是相当于运行该方法,然后在单独的线程中睡1秒一个循环。你不需要计时器。 –