Mr *_*day 0 .net c# timer winforms
我正在尝试创建一个搜索字符串的Windows窗体应用程序,并有三种可能的方案:
我只是在期待等待的时候遇到我的问题.发生这种情况时,newTimer_Tick开始每秒都打勾.我已经尝试在计时器和其他一些东西时禁用计时器,但似乎都没有.以下是代码:
public void Action(string result)
{
if (result.Contains("string1"))
{
// Check again in 10 + x seconds
int n = new Random().Next(0, 5000);
int newtime = 10000 + n;
newTimer.Tick += new EventHandler(newTimer_Tick);
newTimer.Interval = newtime;
newTimer.Enabled = true;
}
else if (result.Contains("string2"))
{
// Turn off
newTimer.Enabled = false;
}
else
{
// Perform action and tick again in 1min + x seconds
action1();
int n = new Random().Next(0, 5000);
int newtime = 600000 + n;
newTimer.Tick += new EventHandler(newTimer_Tick);
newTimer.Interval = newtime;
newTimer.Enabled = true;
}
}
private void newTimer_Tick(object sender, EventArgs e)
{
Action( result );
}
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
每次调用以下行时,事件处理程序newTimerTick的新实例都会添加到Tick事件的调用列表中:
newTimer.Tick += new System.EventHandler(newTimer_Tick);
Run Code Online (Sandbox Code Playgroud)
因此,每当时间滴答消失时,newTimerTick将被多次调用,这将给您带来意想不到的结果.
仅配置一次事件处理程序.在构造函数中将是一个明智的地方.
| 归档时间: |
|
| 查看次数: |
1614 次 |
| 最近记录: |