Перемещение «чтения» в отдельную ветку, безусловно, лучший способ. Однако вы можете добавить следующую функцию, чтобы другие события происходили во время чтения:
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...
}
Это должно сработать, но вы можете заметить, что приложение не отвечает на запросы во время цикла. Надеюсь, это поможет.