我在 visaul c++ 中有一个数据库和一个winform应用程序。db 有两列 Date 和 Temp。这些值由不同的 c++ 程序自动插入到数据库中,该程序计划每 2-3 秒运行一次。在表单中有一个“显示绘图”按钮,单击该按钮将显示日期与温度图。我能够做到这一点。但是,我想要的是该图表会根据数据库中的新值不断更新……类似于心跳监视器或类似的效果。我怎样才能做到这一点。请建议我如何在 Visual C++ 和 THREAD 编程中使用 winform 项目来做到这一点
里德斯
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:对不起...我应该说清楚...如何通过线程执行此操作...我再次为不清楚而道歉