C# 視窗程式:視窗程式的事件驅動邏輯_筆記_傳統思維時常會犯的錯誤_timer物件使用

我們建議一個空的視窗範例來做一個簡單說明!!




拉好一個button  及  一個  Label 之後


我們首先練習做一個簡單的加總計數功能(算總和)

用傳統思維

就是對  button  快點兩下  做按鈕事件的撰寫








假設我今天是要做一個   「計數器」 

而且是  一個   往下數的   計數 功能

那就是  從 10  數到 0 呀

就反過來    一般我們會這麼去做設計




結果   他又是立即顯示的

一次數到1   沒法看到從10、 9、8、7....4、3..

x  照理講會從10數到1阿    label  我也有給它顯示了阿!!


原因是因為  現在的電腦   4G 以上 左右 處理速度   相當於10億(10的9次方)

處理太快  它直接算完了  你是看不到的!!


大一計算機概論小回顧 : 常常會聽到這個電腦是幾"妹嘎"(英文字是mega)幾G
在電腦裡面,可以記憶一個字母的單位叫做位元組(byte,唸成拜特),由於電腦都是以01010101的二進制型式記錄資料,因此,在單位的換算上也是以二的幾次方(二連乘幾次)來表示。就好像公克(g)換算成公斤(kg)加上一個k(代表1,000)一樣。
210次方)個byte -> 2^10 B                                                        
換算成1KB,約相當於一千個位元組(正確的數字是1,024 bytes),簡寫成1K1KB=10^3 (thousand)
K的下一個單位是M,也就是前面的"妹嘎"
210次方*210次方)個byte -> 2^20 B
換算成1MB,相當於1,024K(正確的數字是1,048,576 bytes),也就是大約一百萬個位元組,簡寫成1MB=10^6 (million)
另一個比MB還大的單位是G
210次方*210次方*210次方)個byte -> 2^30 B
換算成1GB,相當於1,024M(正確的數字是 1,073,741,824 bytes),也就是大約十億個位元組。簡稱成1GB=10^9 (billion)
最後一個比G大的單位是T
210次方*210次方*210次方*210次方)個byte -> 2^40 B
換算成1TB,相當於1024G(正確數字是1,099,511,627,776 bytes ),也就是大約兆個位元組。簡稱成 1TB=10^12 (trillion)   接下去還有呢??? 參考即可
PB 250次方: 1125899906842624 BYTE,1024 TB. 
EB 
260次方: 1152921504606846976 BYTE,1024 PB. 
ZB 
270次方: 1024 EB. 
YB 
280次方: 1024 ZB.

節自 : 大一計算機概論筆記




視窗的程式設計邏輯  和一般傳統程式設計邏輯是不一樣的

視窗的設計邏輯  是    寫程式的開發者 要去配合該視窗系統

主控權在 視窗系統  而不是在你身上



視窗系統在適當的時候會透過某個函數把控制權交給你

但是你在得到那個控制權之後

你做完通常是一段非常短的程式之後

又會馬上把控制權交還給視窗系統

視窗系統又繼續做他的事情

函數執行完就是控制權交回去了







我們要設計一個時鐘或者  倒數計數器

不應該把所有要做的事直接通通用傳統程式邏輯思維寫在

button 的 block




由於我希望按下去的時候   會每秒數一次~

這裡需要用到  Timer 的物件


每隔一段時間就去呼叫一次~~~

每隔一段時間就去下數一個~~~


在 button click之後 我要去取得 數值  也就是次數的值






label 記得  int.Parse(..)  把 字串轉型一下







這時你看到他變成 了   負數   我們還可以再多加判斷去修正一下它

然後你就說   那我們就不要讓它   負數小於了還再數不就得了

恩恩   聽起來不錯'很合理







然後你就開始懊惱了   怎麼回事   幹嘛 一直蹦跳出提示視窗

因為我程式運行    當它  等於0就不會再繼續做下去 就會一直是0

然後就掛在哪裡     永遠的0

所以就會不斷跳   視窗

我們要記得關閉   計數器

要在  秀之前



通常像這種情況我們會發現我們完全不用迴圈!!!!

但是它做了迴圈應該有的事情!!!


timer 物件會有 像   迴圈般去幫你做累加計數  的 特性

這個自動計數是由視窗去自動呼叫的

而不是由你主導的!!!!!

在視窗系統中,最好不要試圖去佔據整個CPU去做捨麼很複雜的事情

盡可能簡單~~~

因為你佔據整個CPU就是浪費CPU時間

但是最後的結果   我們會發現

你佔據CPU這麼久時間  到底是要做捨麼  要非常清楚才可以

往往視窗系統我們要佔據少的時間

就算是要做一個   語音轉檔、影像處裡等等

需要很久時間

我們也是  轉換一下  然後控制權立即交還回去  or 建立另外一個程式去轉

另外一個程式去轉  比方說 多執行緒方式

這樣就不會干擾你前面的運作





以上就是 一個視窗程式設計的邏輯基礎應用筆記




留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

外貿Payment Term 付款條件(方式)常見的英文縮寫與定義

(2021年度)駕訓學科筆試準備題庫歸納分析_法規是非題