匯入資料時介面假死

2021-09-05 20:54:30 字數 514 閱讀 5395

匯入資料時介面假死 delphi / windows sdk/api

我做了個sql指令碼恢復工具,在向資料庫恢復資料時,也就10萬條左右吧。  

介面就假死一樣了,任務管理器中顯示,未響應,但實際上是在執行的。  

有沒有好的方法可以解決這樣的占用記憶體和cpu資源過大的問題?

用執行緒這很常見阿,一是用狀態條,可以計算一下腰處理資料條數,跟狀態條進度對應起來,起碼介面上使用者可以看到程式正在執行中。  

要不就只能用另乙個執行緒處理了,用另乙個執行緒偶爾也會暫時出現不響應的狀況,但不會真死。

一種方法是使用多執行緒。  

一種方法是使用tadoquery的非同步功能事件來實現。  

另外一種是使用單個計算,單個顯示(輔助progressbar)來實現。

進度條不能解決問題,因為這仍然是主線程,建議自己重新開個執行緒!

開個執行緒吧

tadoquery的非同步功能事件來實現還是不錯的!

用執行緒吧  

個人感覺還是用執行緒好一點兒

c 介面假死

control.invoke 方法ui執行緒在執行時,會阻塞當前做事執行緒。ui執行緒執行完後,做事執行緒繼續執行。control.begininvoke 方法ui執行緒在執行時,做事執行緒仍會執行 借用原部落格中的話 因此,我們可以想到。如果要非同步取耗費長時間的資料,比如從資料庫中讀大量資料,我...

winfrom中避免載入資料時視窗假死

比較實用的乙個方法,希望對你們有幫助。使用執行緒 system.threading.tasks.task.run new action 方法名 action裡的方法不允許有引數 1.禁用異常 為解決使用執行緒後,datagridview滾動條不出現 注意 不可在多執行緒中隨便使用。control.c...

mysql 資料過大時的匯入

當需要匯入的檔案比較大時,匯入會報錯。報錯內容為 error code 1153 got a packet bigger than max allowed packet bytes錯誤提示。2006 mysql server has gone away 這時需要我們修改mysql的配置檔案 linu...