2012-03-14 236 views
0

如何暫停按鈕onclick讀取文本文件,並在mcc vC++中的Onclick按鈕時恢復它?如何在onclick按鈕中暫停閱讀文本文件並在mcc vC++中的Onclick按鈕時恢復它?

該文件打開如下 CFileException fileException;

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

} 
+0

這是在不同的線程中運行? – Naveen 2012-03-14 08:26:34

+0

我用mfc使用visual C++,所以我用了下面的標籤 – user1268338 2012-03-14 08:37:11

+0

請給一些解決方案:( – user1268338 2012-03-14 11:10:56

回答

0

嘗試TRO的代碼移動到另一個線程,我認爲你必須與reentrancy打,如果這個代碼是在主線程內的任何解決方案,但你必須從窺視消息隊列中的消息。使用一個線程可以suspend它或使用一些synchronization primitive來管理它的等待。

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... 
} 

這應該可行,但您可能會注意到該應用程序在循環過程中有點反應遲鈍。希望這可以幫助。