繁体   English   中英

Visual Studio计时器问题

[英]visual studio timer problems

嗨,大家好,我的计时器基本上是个问题,我将秒变量设置为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,然后基本上不断地垃圾邮件

MessageBox.Show停止执行其余代码,直到用户单击“确定” /“取消” /任何按钮,但计时器将继续计时,并且由于您检查的是seconds < 1而不是== 0 ,因此会生成更多的消息框,并最终生成SQL电话。

而不是

  1. 显示留言框
  2. 停止计时器
  3. 运行SQL

我建议你

  1. 停止计时器
  2. 运行SQL
  3. 显示留言框

首先停止计时器,确保seconds < 1分支仅发生一次(尽管我仍然会检查== 0 ,并且有可能将else更改为else if (seconds > 0) ;第二次运行SQL可以确保通过显示该消息时,确实没收了用户的卡。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM