嗨大家有一个问题的计时器基本上我有秒变量设置为60,当它倒数到0我希望我的SQL命令运行更改数据库,然后为它生成一个消息框说''卡没收''或者其他什么然后一旦他们点击确定应用程序停止
private void timer1_Tick(object sender, EventArgs e)
{
if (seconds < 1)
{
MessageBox.Show("Option timer Expired Card Confiscated please contact your local branch");
timer1.Enabled = false;
sqlCommandTimer.Parameters["@cardNum"].Value = Class1.cardNumber;
sqlCommandTimer.Parameters["@confiscated"].Value = true;
try
{
sqlCommandTimer.Connection.Open();
sqlCommandTimer.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
Application.Exit();
sqlCommandTimer.Connection.Close();
}
}
else
{
seconds--;
listBox2.Items.Add(seconds);
}
这是我的SQL命令
UPDATE dbo.ATMCards
SET confiscated = @confiscated
WHERE (cardNumber = @cardNum)
任何关于我失踪的帮助将不胜感激:)谢谢
编辑:哦废话抱歉忘记添加我的问题它转到0然后基本上不断地垃圾邮件
答案 0 :(得分:1)
MessageBox.Show
会停止执行其余代码,直到用户单击“确定/取消”或“其他”为止,但计时器将继续滴答,因为您正在检查seconds < 1
而不是{{1} },生成更多的消息框,以及最终的SQL调用。
而不是
我建议你
首先停止计时器确保== 0
分支只应该发生一次(尽管我仍然会检查seconds < 1
,并可能将您的== 0
更改为else
;运行SQL秒确保在显示消息时,用户的卡确实被没收。