2016-06-02 7 views
-9

Я хочу добавить в свою локальную базу данных каждую секунду, данные в реальном времени, единственный метод - это таймер, но я не знаю, где я могу объявить класс, и как я могу его использовать.Функция повтора каждую секунду

замечание: 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"); 
} 
+1

Вы приложили все усилия, чтобы написать этот вопрос? – eeerahul

+0

Я предлагаю не использовать термин «realtime», если мы говорим о приложениях .NET. Realtime - это термин с очень конкретным значением: все происходит точно, когда ожидается, что это произойдет с заданной точностью, а если нет - система перейдет в безопасное состояние ошибки. ПЛК - это в реальном времени, .NET не в реальном времени уже по своей природе. Я предлагаю использовать «опрос с интервалом». – Fritz

ответ

1

1- Использование System.Timers.Timer

2- Набор Interval до 1 секунды

3- H andle the 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"); 
    } 
} 
0

Введите код в функцию. Затем вызовите функцию с помощью таймера с номером intwrval, установленным на 1000

Смежные вопросы