BCB下如何监控程序运行时间
求助高手:
我希望在一段程序运行过程中随时监控程序处理时间,主要目的是要做到当处理时间达到某个值时(比如60ms)就立刻终止处理。请问高手们,有办法实现吗?
[解决办法]
这种情况可以设成1ms的时间间隔和一个计数的成员变量,大概是这个样子:
class TForm1::TForm() {
private:
volatile int m_nClick;
int m_nProcess;
};
// 如果ProcessA是一个独立线程
TForm1::OnTimer() {
if ( m_nClick == 60 )
StartProcessA();
m_nClick--;
if ( m_nClick == 0 ) {
StoprocessA();
m_nClick = 60;
if ( --m_nProcess == 0 ) {
Timer1->Enabled = false;
}
}
}
TForm1::Process() {
m_nProcess = 100;
m_nClick = 60;
Timer1->Enabled = true;
}
如果ProcessA在主线程中运行,则需要自己不断检查m_nClick的值,如果为0,就退出ProcessA
TForm1::OnTimer() {
m_nClick--;
}
TForm1::Process() {
m_nProcess = 100;
m_nClick = 60;
Timer1->Enabled = true;
for(int i=0;i<m_nProcess;i++) {
m_nClick = 60;
ProcessA();
}
Timer1->Enabled = false;
}
TForm1::ProcessA() {
while ( m_nTimer > 0 )
DoSomething();
}
一般在这种情况下,应尽量把ProcessA放在独立的线程中