關於CDaoDataBase的總結

2021-06-03 00:40:12 字數 781 閱讀 2756

cdaodatabase

不能使用於多執行緒。

① 在主對話方塊中建立cdaodatabase物件,然後把該物件傳入到掃瞄線程中。

這樣做的結果是,凡是涉及到資料庫操作的語句,如建立,查詢等,在執行時都會出錯。很明顯,這是因為cdaodatabase物件跨越了主對話方塊執行緒和掃瞄工作執行緒。

這個錯誤比較隱蔽。究其原因如下,對於mfc工程,當在工作執行緒中新建cdaodatabase物件時,主線程(主對話方塊執行緒)會紀錄這個物件的指標,即使工作執行緒結束後,這個物件被釋放,在主線程中的cdaodatabase物件指標仍沒有被真正釋放,直到主對話方塊結束時,mfc會對資料庫物件做一些登出的掃尾工作。這也就很隱蔽的使工作執行緒中宣告的cdaodatabase物件跨執行緒了。

③ 在主對話方塊執行緒中建立cdaodatabase物件,且不傳入工作執行緒中,每當工作執行緒中要讀寫資料庫時,就向主對話方塊發訊息,讓主對話方塊中的訊息響應函式運算元據庫。

這樣做,程式不會崩潰,但是,由於硬碟中有大量的檔案,向資料庫中的讀寫操作非常多,gui對話方塊主線程由於處理了太多的訊息而使得主介面很長時間無法響應,這是乙個gui程式不能允許的,因此,此方法也行不通。

在主對話方塊中建立乙個隱藏視窗,在該隱藏視窗中建立cdaodatabase物件,由該隱藏視窗接受工作執行緒的訊息,運算元據庫。

這樣就圓滿的解決了上述問題。當然,由於隱藏視窗是在主對話方塊程序內建立的,mfc的訊息流動機制會使得隱藏視窗處理訊息時也會對主對話方塊的響應產生一定影響,這時,我們只用在每次向隱藏視窗發訊息時,用peekmessage函式強制讓主對話方塊執行緒把訊息佇列中的on_paint訊息處理完即可。

關於this 的使用

如有不對的地方請大家指出,呵呵.this 的使用 1.this是指當前物件自己。當在乙個類中要明確指出使用物件自己的的變數或函式時就應該加上this引用。如下面這個例子中 public class a public static void main string args 執行結果 s hellow...

關於IT的我們

首先,對於廣大程式設計師,要先對程式設計師這個職業有個理性的認識。程式設計師不是什麼神聖的職業,這只是乙個普通的技術工種。我認為還算不上是it精英 當然精英的定位,每個人都有不一樣的標準 我個人認為,能自主發現問題,提出方案,構架程式結構的it人士才能算的上it精英。學會某種語言,了解某個領域的基本...

關於NSAutoReleasePool的理解

做iphone應用開發已經2年多了,但一些基礎的概念性問題只是大致了解,腦袋中有個模糊的概念.雖然對平時工作開發沒什麼影響,不過時間長了,心裡總是有點虛.所以從現在開始,每當我遇到乙個模糊概念的問題或topic,我都要寫一篇blog來記錄分析,響應之前在網上看過的乙個blog簽名 好記性不如爛部落格...