我在visaul c ++中有一个数据库和一个 winform 应用程序。 db有两列Date和Temp。这些值由不同的c ++程序自动插入到数据库中,该程序计划每2-3秒运行一次。在表单中有一个“Show Plot”按钮,点击它会显示Date vs Temp图。我能做到这一点。然而我想要的是这个图表不断更新基于数据库中的新值...像心跳监视器或这样的效果。我怎样才能做到这一点。请建议我如何使用visual c ++和THREAD编程中的 winform项目
Reards
PS:因为我在visual c ++中使用Winform应用程序,所以为图片元素生成了很多代码。可能有用的部分是:
private: System::Void temperature_btn_Click(System::Object^ sender, System::EventArgs^ e) {
String^ constring = L"datasource=localhost;port=3306;username=root;password=root;";
MySqlConnection^ conDataBase = gcnew MySqlConnection(constring);
MySqlCommand^ cmdDataBase = gcnew MySqlCommand("select * from `data`.`test`;",conDataBase);
MySqlDataReader^ myReader;
try{
conDataBase->Open();
myReader = cmdDataBase->ExecuteReader();
// MessageBox::Show("Data Inserted");
while(myReader->Read()){
String^ v_datetime;
String^ v_pressure;
v_datetime = myReader->GetString("datetime");
v_pressure = myReader->GetInt32("temp").ToString();
String^ status;
if (myReader->GetInt32("temp") > 1000 && myReader->GetInt32("temp") < 50 )
{
status = " Abnormal ";
this->chart2->Series["Temperature"]->Color = System::Drawing::Color::Red;
}
else{
status = " Normal";
}
this->label3->Text = status;
this->chart2->Series["Temperature"]->Points->AddXY(v_datetime,myReader->GetInt32("temp"));
// comboBox1->Items->Add(vName);
}
}catch(Exception^ex){
MessageBox::Show(ex->Message);
}
}
需要做些什么来使这个动态...即图表始终以规则的间隔从数据库中挑选值...比如每3-5秒(数据库正在被另一个完全不相关的进程每2更新一次) -3秒)
PS编辑2:对不起......我应该说得清楚......如何通过线程做到这一点......我再次道歉,因为不清楚
答案 0 :(得分:1)
将Timer添加到Windows窗体(从工具箱中)并为Tick事件注册EventHandler。同时将“Intervall”设置为您想要的值。然后将属性“Enabled”设置为“true”或在“Form_Loaded”EventHandler中手动启动它。