如何在点击按钮时暂停读取文本文件并在mfc vc ++中的Onclick按钮时恢复它?

时间:2012-03-14 08:22:24

标签: c++ visual-c++ mfc mfc-feature-pack

如何在点击按钮时暂停阅读文本文件,并在mfc vc ++中的Onclick按钮时恢复它?

文件打开如下 CFileException fileException;

    if (readFile.Open(strFilePath, CFile::modeRead, &fileException)
{
while (readFile.ReadString(strLine))
{
...
}

}

2 个答案:

答案 0 :(得分:0)

尝试将该代码转移到另一个线程,我认为使用任何解决方案,如果此代码位于主线程内但您必须查看消息,则必须与reentrancy进行对抗来自消息队列。使用线程,您可以suspend或使用一些synchronization primitive来管理其等待。

答案 1 :(得分:0)

将“阅读”移动到单独的线程绝对是最好的方法。但是,您可以添加以下函数以允许在阅读时发生其他事件:

void DoEvents()
{
  MSG msg;
  while( ::PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
  {
    ::TranslateMessage( &msg );
    ::DispatchMessage ( &msg );
  }
}

假设您的代码中有一个易失性标记,表示暂停/恢复,您可以执行以下操作:

while (readFile.ReadString(strLine)) 
{ 
  while( this->m_bPause == TRUE )
  {
    ::Sleep( 100 ); // Adjust as necessary
    DoEvents();
  }

  // continue reading...
} 

这应该可行,但您可能会注意到应用程序在循环期间有点无响应。希望这会有所帮助。