我已經使用Borland的C++ builder編寫了一個小程序,一路上,一切似乎都很好。我的程序有一個地圖窗口和一個表格窗口,當用戶按下一個按鈕時,開始一個長時間的過程,讀入所有地圖和表格信息,然後顯示它。每次我通過調試器運行時,我都沒有問題。然後今天,我決定測試它,而不通過調試器運行。令我驚駭的是,程序讀入地圖信息,然後將其顯示在油漆盒畫布上,但沒有問題,但是當它加載網格信息時,地圖會被擦除!它似乎發生在表的加載階段。這需要大約4秒鐘,在這段時間內,窗口告訴我它沒有響應。這是當地圖被擦除時。任何人有任何想法,爲什麼發生這種情況?它驅使我瘋狂,我真的不明白這裏引擎蓋下發生了什麼。當我的程序「無響應」時,爲什麼我的paintBox畫布被擦除?
更新:
我已經在一定程度上解決了這個問題。我正在四處尋找並發現:Avoiding "(Not Responding)" label in windows while processing lots of data in one lump
我添加了代碼,以便在表中讀入的數據中間運行一次。這固定了我的問題。但是,我想知道是否有人知道爲什麼會出現這種情況?爲什麼我的程序無響應導致我的畫布被擦除?
這是一個通用的Windows問題。如果任何長處理髮生在主消息傳遞線程上,應用程序將停止響應。 – 2010-08-31 15:25:12