多執行緒初探--使用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的用途。

...繼續閱讀 »

懶人的SQL語法產生器

標題有點會讓人誤解,我並不是要寫一個產生器出來,只是應用我們自己都會裝在電腦裡的SQL Server管理工具,個人之所以會這樣用主要是因為打字的技巧不太好兼之常頭腦發昏,因此常常為了找尋那種字打錯導致程式查詢不出東西而苦惱。

...繼續閱讀 »

Try Catch能幫你做什麼(4)?

第四篇來談談用Try Catch來避免必然會發生的問題,一開始我在建立這個系列文章的原因是因為常再MSDN看到許多.Net同好們問的問題所引發的靈感,因為許多同好對於Try Catch並沒有特別的重視其例外訊息所帶給程式撰寫者的提示,所以往往會被這些例外狀況困住;而另一種情況則是引發了必然發生的例外,卻沒想到使用Try Catch來閃躲這個例外,這也就是這一篇的主要討論範圍。

...繼續閱讀 »

給.Net初心者的建議

如果你是.Net初心者,歡迎你來到這個有趣的世界,或許你是迫不得已要學這些程式語言,可能覺得一點都不有趣,但我還是希望你們可以看看這篇文章。

...繼續閱讀 »

Try Catch能幫你做什麼(1)?

看到這個標題大概很多人會笑出來:「廢話!當然是除錯!」。是的,Try Catch最主要的功能就是除錯,而這檔事也是初學者應該要列為首要學習的事情之一,所以我想特別談談這件事情。

...繼續閱讀 »