c WinForm 開發心得

2021-09-21 05:43:08 字數 1551 閱讀 1145

本人現在基本上只做winform開發,在開發過程當中,用到最多的是執行緒,我們知道,在開發人機實時互動介面的程式當中,執行緒是最基本的資料處理方式,可以減少介面程式當中假死狀態,也可以使程式在執行過程當中,減少主程式的工作量,使乙個複雜的業務分任務處理。乙個任務可能需要乙個執行緒處理,比如全域性計時執行緒,也可能乙個任務需要多個執行緒處理,比如向遠端傳輸資料,可能因為資料延遲等原因,不可能等乙個執行緒送完資料後,再回來取下乙個資料向上送,這個時候就需要開啟多個執行緒,乙個執行緒送乙個,不管有沒有送完,下乙個執行緒接著送,這個就需要執行緒的並行處理,並且要保證執行緒執行完成後,即時**清理記憶體,不然很容易造成記憶體溢位,導致程式報錯,比如說相機實時收取影象,並且在介面上顯示,這種情況會大量消耗記憶體,不及時清理,程式報錯很正常。

還有乙個,在開發介面程式時,介面顯示上,也會出現問題。比如相機實時接收影象並通過picturebox控制項當中,這個過程當中,picturebox不會釋放資源影象,只會一點一點去替換資源,但替換的資源又不是及時清理掉,而是放在記憶體當中,這樣乙個是導致記憶體溢位,另乙個是如果是執行緒傳過來的影象資料,我們一般只有兩種處理方式,乙個是新增control.checkforillegalcrossthreadcalls = false;語句,來忽略控制項丟擲的異常,這個方式一旦長時間使用,還是會報錯,導致控制項顯示乙個大大的「x」圖,這時候除了重啟程式外,別無它法。還有一種方式,使用this.invoke方法來實現非同步顯示,this代表的是當前整個窗體,如果整個窗體需要實時重新整理顯示的控制項太多,會大大降低整個程式的執行速度。還有乙個方法就是控制項本身invoke函式,但這個函式我感覺有些假,不能用,如果使用控制項本身的invoke去控制它自身的變化,感覺不太現實,因為我做了一實驗,使用picturebox顯示相機影象,同時開始多個執行緒去處理比較複雜的業務,會導致picturebox控制項崩潰,最後就試了一下,將picturebox外部套用乙個panel控制項,使用panel的invoke去控制子控制項picturebox控制項,得到的效果非常理想,不會拖慢整體程式的速度,也不會顯示報錯,我想可能是控制項的父容器最將傳進去的物件排好佇列後,一條一條去送給子控制項,因為父容器本身不需要做改變,不會丟擲異常,所以處理速度也快,只不過,在資源管理器當中,看到的現象就不一樣了,加容器去處理子控制項,會導致資源管理器中,看到的執行緒數量比較高,處理得越複雜,執行緒數量越高,所以在開發過程當中,最好寫乙個即時清理自己記憶體的執行緒或清理整個電腦資源當中的記憶體的執行緒,就像是360safe當中的記憶體清理功能,這樣可以大大降低程式對電腦的要求。

最後乙個就是全域性列表的問題,如ilist,在乙個執行緒當中需要增加列表,在另乙個執行緒當中需要減少列表,這個時候,很容易產生衝突從而使程式報錯,我的處理方法是在全域性變數當中,寫乙個全域性的object變數,如object objstr = new object();在操作列表的時候,使用lock鎖定objstr這個變數,當有乙個執行緒在執行內在業務時,另乙個只能等了,只有這個業務處理完成後,釋放出objstr時,另乙個業務才能開始,這樣就避開了衝突,但同時,需要消耗的就是電腦資源。

再有說一點,乙個專案的好壞,並不是說**量大,功能全就是好專案,只有在寫程式時,組織好各部分的協調處理業務的能力,在此基礎上擴充套件出的業務都是基於這個框架內的模式上進行擴充套件,那麼這個專案以後無論發生多大的變化,核心是不變的,那麼出錯的機率就幾乎為零。

C WinForm開發系列 OWC

office web components是一組的com控制項,設計的目的是為眾多的控制項容器提供互動的電子 建模,資料包表和資料視覺化功能。owc庫包含四個主要的元件 電子 元件,圖表元件,透視表元件和資料來源元件。owc owc使用方法 owc使用技巧集 c 編寫owc11元件 轉貼 c 編寫o...

C WinForm開發系列 TreeView

包含非同步載入樹,帶拖動,多選,動畫效果等控制項 文章及相關 蒐集自網路,僅供參考學習,版權屬於原作者 1.我的資源管理器 2.支援animation效果的樹控制項 翻譯stu smith著customizable tree control with animation support ivanx譯...

C WinForm開發系列 RDLC

rdlc報表 一 rdlc報表 二 rdlc報表 三 rdlc報表 四 rdlc報表 五 rdlc報表 六 rdlc報表 七 rdlc報表 八 完整的自定義紙張列印rdlc報表例子 rdlc report design step by step 1 drillthrough report rdlc ...