我的Windows服务中有2个不同的计时器,每个计时器每隔5秒运行一次,但它们都没有同时运行。
我的日志简化日志如下所示
11:49:00 : Timer1
11:49:05 : Timer1
11:49:10 : Timer1
11:49:15 : Timer1
11:49:20 : Timer1
11:49:25 : Timer1
11:49:30 : Timer1
11:49:35 : Timer1
11:49:48 : Timer2
11:49:53 : Timer2
11:49:58 : Timer2
这继续只有一个被激活5秒的正确时间然后另一个被激活。我希望他们两个都能跑。
我知道你会问“为什么不把它们放在同一个计时器里?”但我会添加多个计时器,这些事件的时间可能会改变,所以我真的很想解决这个问题。
这是我的代码,
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
//Read or Create xml file to get necessary settings
SerializeIformBuilder();
//Checks for any user changes that may have occurred
var manageUsers = new App.BLL.ManageUsers();
System.Timers.Timer CreateNewUserTimer = new System.Timers.Timer();
System.Timers.Timer PasswordUpdateTimer = new System.Timers.Timer();
//Create Timer interval events
CreateNewUserTimer.Elapsed += new System.Timers.ElapsedEventHandler(manageUsers.TimedEvent_CreateNewUsers);
CreateNewUserTimer.Interval = 5000; //Once every 5 seconds
CreateNewUserTimer.Enabled = true;
PasswordUpdateTimer.Elapsed += new System.Timers.ElapsedEventHandler(manageUsers.TimedEvent_PasswordUpdate);
PasswordUpdateTimer.Interval = 5000; //Once every 5 seconds
PasswordUpdateTimer.Enabled = true;
}
答案 0 :(得分:0)
Interval
的{{1}}实际上并未得到保证,就像您无法依靠Timer
正好完全 5秒一样。
如果两个代表都需要在同一时间执行,那么您需要实现自己的特殊计时器,例如:一个持有多个代表并知道其执行间隔的文件。
简化为:
Thread.Sleep(5000)