發問的藝術與技術

這幾個月以來到各論壇逛來逛去幾乎已經快變成一種生活習慣,每天看著許多的人在各論檀發問,另外也有許多的人熱心的在論壇上回答問題,有個感想是發問其實也是件要學習的事情。有人或許會覺得這像抱怨文,如果看倌您看了覺得不舒服,在下我也只能跟您說聲抱歉。

...繼續閱讀 »

多執行緒初探--使用BackgroundWorker(1)

.Net Framework在多執行緒的支援上提供了許多方便的類別,而BackgroundWorker則是一項非常容易用來撰寫多執行緒的類別, 它不僅和System.Windows.Forms.Timer一樣也在工具箱提供了可拖曳使用的元件,並且提供了ProgressChanged事件使得更動主畫面控制項可以不需藉由Control.Invoke﹝有些時候Invoke的概念對初學者會有或多或少邏輯上的困擾﹞,個人覺得這個元件滿適合初學者當做撰寫多執行緒的入門。

...繼續閱讀 »

自製簡易排程器(2)

這一次來講比較進階型的排程器作法,主要想達到以下幾個目的:
1.能夠以類別的型式存在,方便改裝成類別庫的型式提供其它的應用程式引用。
2.不需要每秒﹝或每分鐘﹞不斷地去檢查是否已經抵達指定的時間,而是在指定時間到達時刻去執行必要程序即可。
3.可以將要執行的程序以CallBack方式傳入執行個體中。
4.當系統時間被改變的時候,依然能夠準確的在指定抵達時間執行程序。

...繼續閱讀 »

自製簡易排程器(1)

有些時候我們在程式中會用到排程器的功能,說起來排程器其實就是在應用Timer的功能,我知道網路上其實有滿多這種現成的排程器類別可用,不過個人覺得自己動手寫來的有趣點。

...繼續閱讀 »

三種時間人《.NET中的Timer(3)》

第三種Timer就是System.Threading.Timer﹝以下簡稱為Threading.Timer﹞,和前兩個Timer不同的是,Threading.Timer是使用回呼﹝Callback﹞方式而非使用事件﹝Event﹞來執行其工作,在MSDN文件庫中的System.Threading命名空間中的[Timer 成員]可以看到這個類別是不具備事件的。

...繼續閱讀 »

三種時間人《.NET中的Timer(1)》

Timer在.Net中也是個挺有趣的族群,在.Net Framework中有三種不一樣的Timer,分別是Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer。這三個時間人在某些地方有點相同,也有許多地方大異其趣,所以我一直覺得他們是很有意思的。

...繼續閱讀 »

DataGridView Rows Copy

這一篇談一個小小的技巧,最近也常在MSDN看過類似的問題,許多同好都會提出如何把一個DataGridView的Row複製到另一個DataGridView,所以就想寫一個小小的範例讓需要的人參考。

...繼續閱讀 »

Serial Port通訊檢測

最近在MSDN論壇上有幾位網友問到關於Serial Port通訊的問題,以前我也相同的困擾,當程式發送了一個命令給設備後,倒底是設備根本沒有回應?還是回應時間太慢?還是程式命令沒送出去?還是設備根本就有問題?過去常為了這個問題常常修改程式搞了半天,總是花了一堆時間還一頭霧水。

...繼續閱讀 »

回呼的秘密花園《State Object》

.NET提供了許多回呼的方法使得撰寫多執行緒與非同步的程式變的較為簡單,像是ThreadPool.QueueUserWorkItem、Socket與其衍生類別的Beginxxxx、ADO.NET中的SqlCommand.Beginxxxxx等等。而這些方法通常在其多載函式中其中至少會有一個具備了State Object,當我剛開始撰寫這一類程式的時候,一直無法弄清楚這個State Object的作用,所以想要特別用簡單的方式來介紹這個Object的用途。

...繼續閱讀 »