【发布时间】:2012-05-16 18:05:54
【问题描述】:
我需要帮助如何解冻我的对话框。我正在使用 MFC,当按下按钮时,我想执行一个无限循环。但是,当无限循环开始时,对话框会冻结。现在我查看了this thread,那里有人遇到了类似的问题。
不幸的是,我尝试了多线程,但我发现它对我不起作用,因为我使用的是使用 OLE 自动化的 api,并且我遇到了未处理的内存异常。我认为这是因为程序使用了串口,而我在某个地方读到了你只能在一个线程中使用串口的句柄。
我的程序只是查看是否有人拨入了我的调制解调器并等待他们向我发送文件,然后挂断。这是我的循环。
while(1)
{
//get rid of input buffer
ts->_this->m_pHAScript->haReleaseRemoteInput();
ts-> _this->textBox->SetWindowTextA("thread Commence");
//wait for connected
if(success = ts->_this->m_pHAScript->haWaitForString("CONNECT",timeout))
{
//getFile
if(success = ts->_this->m_pHAScript->haWaitForXfer(5000))
{
//hangup
ts->_this->haTypeText("+++ath\r");
}
}
}
有没有办法解冻对话框?
【问题讨论】:
-
您仍然可以将多线程与 OLE 自动化结合使用。但是你必须在每个线程开始时调用 OleInitialize() !
标签: multithreading mfc dialog serial-port modem