每秒重复一次功能

时间:2016-06-02 09:42:31

标签: c#

我想每秒添加到我的本地数据库,实时数据,唯一的方法是计时器,但是,我不知道我可以在哪里声明该类,以及我如何使用它

备注:cn是SQL连接

private void button2_Click(object sender, EventArgs e)
{
    cn.Open();

    try
    {
        MySqlCommand cmd = new MySqlCommand("insert into supervision values("...........')", cn);
        /
        cmd.ExecuteNonQuery();
    }
    catch (MySqlException ex)
    {
        if (ex.Number == 2627)
        {
            MySqlCommand cmd2 = new MySqlCommand("insert into supervision values(" +.......')", cn);

            cmd2.ExecuteNonQuery();
        }
    }
    cn.Close();
    MessageBox.Show("database added");
}

2 个答案:

答案 0 :(得分:1)

1-使用System.Timers.Timer

2-将Interval设为1秒

3-处理Elapsed事件

4-使用lock使方法线程安全,这样就不会有2个定时器同时插入数据库。

var mytimer = new System.Timers.Timer(1000);
mytimer.Elapsed += Mytimer_Elapsed;
mytimer.Start();

private static object lockobject = new object();
private static void Mytimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    lock(lockobject)
    {
        cn.Open();

        try
        {
            MySqlCommand cmd = new MySqlCommand("insert into supervision values("...........')", cn);
            /
            cmd.ExecuteNonQuery();
        }
        catch (MySqlException ex)
        {
            if (ex.Number == 2627)
            {
                MySqlCommand cmd2 = new MySqlCommand("insert into supervision values(" +.......')", cn);


                cmd2.ExecuteNonQuery();
            }
        }
        cn.Close();
        MessageBox.Show("database added");
    }
}

答案 1 :(得分:0)

将代码放入函数中。然后在intwrval设置为1000

的计时器内调用该函数