我在Windows应用程序上运行了多个计时器。每个timer_tick都运行一个代码。现在,我正在研究两个过程。
private async void tmrProcessDelay_Tick
private async void tmrAutopay_Tick
最近刚刚添加了tmrAutopay
作为添加过程,因此我使它们同时工作,而不是顺序过程。我遇到的问题是我无法重新启动自动转帐过程。
加载表单时,计时器在顶部被声明为实例。
private System.Windows.Forms.Timer tmrProcessDelay = new System.Windows.Forms.Timer();
private System.Windows.Forms.Timer tmrAutopay = new System.Windows.Forms.Timer();
tmrAutopay.Interval = 2000;
tmrAutopay.Enabled = false;
tmrAutopay.Tick += new EventHandler(tmrAutopay_Tick);
private async void tmrAutopay_Tick(object sender, EventArgs e)
{
messagebox("tick"); // correcting this one
txtNotes.AppendText("tick");
tmrAutopay.Enabled = false;
// do some code
tmrAutopay.Enabled = true;
}
编辑:按照 Michael Randall 的建议,我尝试在顶部添加断点。我知道了只是逻辑上。我只是认为它不会再开始,因为“ tick”仅追加一次,因此我认为它只运行了一次。当我添加断点时,它再次滴答,但是由于某种原因,它没有appendText
,因为我确实承担了一切。回到问题之后,由于现有逻辑,
计时器滴答仅在我第一次启用它后运行,然后在滴答时将其设置为false以执行一些代码,然后在完成后再次启动它。
我还没有尝试this system timer解决方案,并且还看到一些帖子说计时器不会在后台进程上运行,因为我可以一次运行它,这意味着它可以..但是我只想问一下如果有任何原因导致我遇到此问题,我会更改计时器吗?
答案 0 :(得分:-1)
如果要进行类似后台的处理,则可以执行窗口服务应用程序,并在该代码中实现多个计时器。我在这种类型的应用程序方面具有良好的工作经验,并且我相信它可以正常工作,并且不会影响多个计时器。在代码中,您唯一需要注意的是,如果某些代码花费的时间比预期的长,并且超过了计时器的间隔,则它将启动另一个线程,该线程最终可能导致该计时器的死锁或使应用程序崩溃。每个计时器独立工作,并在每次计时时创建一个新线程。