我使用Winforms / C ++编写了一个PC应用程序。我正试图从外部EEPROM中获取一些数据到我的PC中,当我单击Winforms应用程序上的按钮时,我会这样做。下载需要很长时间才能完成,因此我有一个文本框,我首先显示“ 下载电压波动数据,向用户表示。请稍候...... “,然后我调用开始下载数据的功能(大约需要30秒),最后我打印出一个” 完成! “。
但我遇到的问题是我的第一行“ 下载电压波动数据。请稍候...... ”不会立即显示“ 完成! ”仅在 30秒之后,这不符合此目的。
我不是C ++的新手,但这是我第一次尝试使用WinForms ,所以我不知道应该怎样做以立即启动文本。
是否有明确将文本刷新到richtextbox的功能?
按钮的代码如下所示。
private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e)
{
this->richTextBox1->Text += "\n> Downloading Voltage fluctuation data...";
Download_EEPROM_data();
this->richTextBox1->Text += " done!";
}
答案 0 :(得分:2)
这是因为下次程序运行事件处理循环时会进行更新。而且由于你通过冗长的函数调用来阻止它,所以不会发生。
一种可能的解决方案是使用单独的线程进行下载,该线程通知主GUI线程它的状态。
答案 1 :(得分:2)
您将看到更新一次button4_Click(...)返回当前Download_EEPROM_data()调用阻止它。您可以使用一个单独的线程从eeprom下载数据,并完成后通知主线程,它可以发布“完成”消息。