2012-03-21 53 views
-2

嗨,我想在c#中使用计时器对象来更新我的数据库,并将卡设置为没收,如果它在那里超过5秒钟。我有一点麻烦。将贴在你的计时器下面c#ATM模拟器中的计时器功能

private void timer1_Tick(object sender, EventArgs e) 
{ 
    if (seconds > 5) 
    { 
     timer1.Enabled = false; 
     MessageBox.Show("Card NOT removed in time: CONFISCATED"); 
     login.cardConfiscated(cardNumber); 
     login.Visible = true; 
     this.Close(); 
    } 
} 

private void Form1_load(object sender, EventArgs e) 
{ 
    timer1.Enabled = true; 
} 

public void cardConfiscated(string number) 
{ 
    atmCardsTableAdapter1.confiscated(number); 
    atmCardsTableAdapter1.FillByNotConfiscated(boG_10033009DataSet.ATMCards); 
} 
+2

其中是'seconds'定义?这是作业吗? – 2012-03-21 18:29:52

+3

你也应该说明你有什么麻烦(超越“小”)。 – 2012-03-21 18:30:16

+0

你的秒变量没有在你创建或增加的任何地方举例,你错过了一些我们需要帮助解决问题的代码 – deltree 2012-03-21 18:30:27

回答

0

第一件事,第一,你永远设定的时间间隔我的代码。

private void Form1_load(object sender, EventArgs e) 
{ 
    timer1 = new Timer(5000); // sets interval to 5 seconds 
    timer1.Elapsed += new new ElapsedEventHandler(timer1_Tick); 
    timer1.Start(); 
} 

我做以上五周秒钟的间隔,使我们不必调用计时器不止一次这样做,当5秒的推移,我们可以直接跳到多汁的东西:

private void timer1_Tick(object sender, EventArgs e) 
{ 
    timer1.Stop(); 
    MessageBox.Show("Card NOT removed in time: CONFISCATED"); 
    login.cardConfiscated(cardNumber); 
    login.Visible = true; 
    this.Close(); 
} 

最后,你要注意,如果你有计时器较短的时间间隔,那么你需要增加你的秒,例如:

private void Form1_load(object sender, EventArgs e) 
{ 
    timer1 = new Timer(1000); // sets interval to 1 second 
    timer1.Elapsed += new new ElapsedEventHandler(timer1_Tick); 
    timer1.AutoReset = true; // sets the timer to restart after each run 
    timer1.Start(); 
} 

然后,我们就需要增加秒每个时间间隔,就像你没有。

private void timer1_Tick(object sender, EventArgs e) 
{ 
    seconds++; 
    if (seconds > 5) 
    { 
     timer1.Stop(); 
     MessageBox.Show("Card NOT removed in time: CONFISCATED"); 
     login.cardConfiscated(cardNumber); 
     login.Visible = true; 
     this.Close(); 
    } 
}