簡體   English   中英

持有滾動條會凍結win32控制台應用程序

[英]Holding scrollbar freezes win32 console application

我寫了這個小程序來說明我的問題:

int main(int argc, char* argv[])
{
   int i = 0;
   while(1)
   {
       std::cout << i++ << std::endl;
       Sleep(1000);
   }
    return 0;
}

因此,如果您按住垂直滾動條(查看日志或其他內容......),這個簡單的程序將停止計數。

有辦法避免這種情況嗎?

干杯

並不是的。 會發生什么是持有滾動條會阻止應用程序將任何新輸出寫入控制台,因此它最終會阻塞刷新std :: cout。 這是由於Windows如何實現控制台而無法避免的。

如果你不能依賴程序的繼續執行,你可以根據從初始程序經過的時間來計算i

#include <ctime>

time_t initialSeconds;

int main(int argc, char* argv[])
{
  double i=0;

  //Initialise time
  initialSeconds = time (NULL);

  while(1) {
    i = difftime(initialSeconds, time(NULL));
    sleep(1000);
  }
}

這將根據計算機時鍾計算經過的秒數。

(沒有測試過,因為我不在帶編譯器的機器上)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM