2013-03-13 141 views
-8

嘿傢伙我有一個做雖然循環它的簡單,但程序進入無響應狀態,而運行它繼承了循環。C++做while循環沒有響應

bool SetTime(const int hour,const int min,HWND sec) 
{ 
    do 
    { 
     time_t s=time(0); 
     tm t=*localtime(&s); 
     itoa(t.tm_sec,buf3,10); 
     SetWindowText(sec,buf3); 
     if (hour == t.tm_hour && min == t.tm_min) 
     { 
       exit(0); 
     } 
     Sleep(1000); 
    } 
    while(hour == t.tm_hour && min >t.tm_min); 
} 

運行每一秒,當它到達適當的時候停止

+0

在哪個操作系統上?用哪個編譯器?在哪個平臺上? – 2013-03-13 22:15:48

+0

您可能在此任務中掛着您的程序主線程。嘗試使用多線程。 – Havenard 2013-03-13 22:16:06

+0

使用Dev C++在Windows 7中運行 – user2167455 2013-03-13 22:23:28

回答

4

假設的Win32由於HWND,你是阻塞事件循環。如果你想推遲一個操作看看使用一個計時器。

+0

謝謝我會嘗試,我應該嘗試一起拿出HWND嗎? – user2167455 2013-03-13 22:22:53

+0

@ user2167455:與其比較平等,您可能想要檢查大於。根據其他任務和程序的運行情況,操作系統在特定時間和分鐘安排任務的可能性可能較低。 – 2013-03-13 23:52:59

+0

@Gary感謝您的提示,SetTimer()是我沒有嘗試過的最後一種循環類型,因爲我認爲它可能會返回相同類型的不響應操作,但它經歷了很好的幫助,感謝所有那些對我的問題不利,謝謝你的否定性只會讓我工作更努力:) – user2167455 2013-03-14 01:19:59