C# 視窗程式:視窗程式的事件驅動邏輯_筆記_傳統思維時常會犯的錯誤_timer物件使用
我們建議一個空的視窗範例來做一個簡單說明!!
拉好一個button 及 一個 Label 之後
我們首先練習做一個簡單的加總計數功能(算總和)
用傳統思維
就是對 button 快點兩下 做按鈕事件的撰寫
假設我今天是要做一個 「計數器」
而且是 一個 往下數的 計數 功能
那就是 從 10 數到 0 呀
就反過來 一般我們會這麼去做設計
結果 他又是立即顯示的
一次數到1 沒法看到從10、 9、8、7....4、3..
x 照理講會從10數到1阿 label 我也有給它顯示了阿!!
原因是因為 現在的電腦 4G 以上 左右 處理速度 相當於10億(10的9次方)
處理太快 它直接算完了 你是看不到的!!
節自 : 大一計算機概論筆記
視窗的程式設計邏輯 和一般傳統程式設計邏輯是不一樣的
視窗的設計邏輯 是 寫程式的開發者 要去配合該視窗系統
主控權在 視窗系統 而不是在你身上
視窗系統在適當的時候會透過某個函數把控制權交給你
但是你在得到那個控制權之後
你做完通常是一段非常短的程式之後
又會馬上把控制權交還給視窗系統
視窗系統又繼續做他的事情
函數執行完就是控制權交回去了
我們要設計一個時鐘或者 倒數計數器
不應該把所有要做的事直接通通用傳統程式邏輯思維寫在
button 的 block
由於我希望按下去的時候 會每秒數一次~
這裡需要用到 Timer 的物件
每隔一段時間就去呼叫一次~~~
每隔一段時間就去下數一個~~~
在 button click之後 我要去取得 數值 也就是次數的值
label 記得 int.Parse(..) 把 字串轉型一下
這時你看到他變成 了 負數 我們還可以再多加判斷去修正一下它
然後你就說 那我們就不要讓它 負數小於了還再數不就得了
恩恩 聽起來不錯'很合理
然後你就開始懊惱了 怎麼回事 幹嘛 一直蹦跳出提示視窗
因為我程式運行 當它 等於0就不會再繼續做下去 就會一直是0
然後就掛在哪裡 永遠的0
所以就會不斷跳 視窗
我們要記得關閉 計數器
要在 秀之前
通常像這種情況我們會發現我們完全不用迴圈!!!!
但是它做了迴圈應該有的事情!!!
timer 物件會有 像 迴圈般去幫你做累加計數 的 特性
這個自動計數是由視窗去自動呼叫的
而不是由你主導的!!!!!
在視窗系統中,最好不要試圖去佔據整個CPU去做捨麼很複雜的事情
盡可能簡單~~~
因為你佔據整個CPU就是浪費CPU時間
但是最後的結果 我們會發現
你佔據CPU這麼久時間 到底是要做捨麼 要非常清楚才可以
往往視窗系統我們要佔據少的時間
就算是要做一個 語音轉檔、影像處裡等等
需要很久時間
我們也是 轉換一下 然後控制權立即交還回去 or 建立另外一個程式去轉
另外一個程式去轉 比方說 多執行緒方式
這樣就不會干擾你前面的運作
以上就是 一個視窗程式設計的邏輯基礎應用筆記
拉好一個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)一樣。
(2的10次方)個byte -> 2^10 B
換算成1KB,約相當於一千個位元組(正確的數字是1,024 bytes),簡寫成1K或1KB=10^3 (thousand)
K的下一個單位是M,也就是前面的"妹嘎"
(2的10次方*2的10次方)個byte -> 2^20 B
換算成1MB,相當於1,024K(正確的數字是1,048,576 bytes),也就是大約一百萬個位元組,簡寫成1MB=10^6 (million)
另一個比MB還大的單位是G
(2的10次方*2的10次方*2的10次方)個byte -> 2^30 B
換算成1GB,相當於1,024M(正確的數字是 1,073,741,824 bytes),也就是大約十億個位元組。簡稱成1GB=10^9 (billion)
最後一個比G大的單位是T
(2的10次方*2的10次方*2的10次方*2的10次方)個byte -> 2^40 B
換算成1TB,相當於1024G(正確數字是1,099,511,627,776 bytes ),也就是大約兆個位元組。簡稱成 1TB=10^12 (trillion) 接下去還有呢??? 參考即可
PB ,2的50次方: 1125899906842624 BYTE,或1024 TB.
EB ,2的60次方: 1152921504606846976 BYTE,或1024 PB.
ZB ,2的70次方: 1024 EB.
YB ,2的80次方: 1024 ZB.
EB ,2的60次方: 1152921504606846976 BYTE,或1024 PB.
ZB ,2的70次方: 1024 EB.
YB ,2的80次方: 1024 ZB.
節自 : 大一計算機概論筆記
視窗的程式設計邏輯 和一般傳統程式設計邏輯是不一樣的
視窗的設計邏輯 是 寫程式的開發者 要去配合該視窗系統
主控權在 視窗系統 而不是在你身上
視窗系統在適當的時候會透過某個函數把控制權交給你
但是你在得到那個控制權之後
你做完通常是一段非常短的程式之後
又會馬上把控制權交還給視窗系統
視窗系統又繼續做他的事情
函數執行完就是控制權交回去了
我們要設計一個時鐘或者 倒數計數器
不應該把所有要做的事直接通通用傳統程式邏輯思維寫在
button 的 block
由於我希望按下去的時候 會每秒數一次~
這裡需要用到 Timer 的物件
每隔一段時間就去呼叫一次~~~
每隔一段時間就去下數一個~~~
在 button click之後 我要去取得 數值 也就是次數的值
label 記得 int.Parse(..) 把 字串轉型一下
這時你看到他變成 了 負數 我們還可以再多加判斷去修正一下它
然後你就說 那我們就不要讓它 負數小於了還再數不就得了
恩恩 聽起來不錯'很合理
然後你就開始懊惱了 怎麼回事 幹嘛 一直蹦跳出提示視窗
因為我程式運行 當它 等於0就不會再繼續做下去 就會一直是0
然後就掛在哪裡 永遠的0
所以就會不斷跳 視窗
我們要記得關閉 計數器
要在 秀之前
通常像這種情況我們會發現我們完全不用迴圈!!!!
但是它做了迴圈應該有的事情!!!
timer 物件會有 像 迴圈般去幫你做累加計數 的 特性
這個自動計數是由視窗去自動呼叫的
而不是由你主導的!!!!!
在視窗系統中,最好不要試圖去佔據整個CPU去做捨麼很複雜的事情
盡可能簡單~~~
因為你佔據整個CPU就是浪費CPU時間
但是最後的結果 我們會發現
你佔據CPU這麼久時間 到底是要做捨麼 要非常清楚才可以
往往視窗系統我們要佔據少的時間
就算是要做一個 語音轉檔、影像處裡等等
需要很久時間
我們也是 轉換一下 然後控制權立即交還回去 or 建立另外一個程式去轉
另外一個程式去轉 比方說 多執行緒方式
這樣就不會干擾你前面的運作
以上就是 一個視窗程式設計的邏輯基礎應用筆記
留言
張貼留言