使用記憶體剖析工具來找出應用程式的記憶體洩漏問題

9/30/2012
先前有一篇筆記說明了 .NET 事件訂閱寫法如何導致 Windows 應用程式很容易出現記憶體洩漏的問題。這次要介紹 .NET Memory Profiler 的一點粗淺用法,看看這項工具對於找出記憶體洩漏問題能夠提供什麼幫助。Visual Studio 2012 內建的剖析功能也會順便提一點。(圖多)

Windows Service 與日期時間格式

9/25/2012
如果你正在撰寫 Windows service 應用程式,裡面需要將 DateTime 轉換成字串,而在轉換時不指定日期時間格式,例如 DateTime.Now.ToString()。這樣的寫法,你認為會得到什麼格式的日期時間字串?我想大概在 99% 的情況下,答案都非常明顯:根據目前執行緒的 CurrentCulture 而定,預設就是使用控制台裡面的設定。可是我卻碰到了那 1% 的狀況,整個追蹤過程就是覺得不可思議,直到真相大白。

WPF 4.5:撰寫自訂的 WeakEventManager 類別

9/20/2012
這其實是<使用 Weak Events 來避免記憶體洩漏>的續集,主要是補充上次略過的部分,也就是撰寫自訂的 WeakEventManager 類別。此類別與我們的程式有何關係,前因後果已在上集說過,這裡就不再重複。

使用 Weak Events 來避免記憶體洩漏問題

9/18/2012
.NET 事件訂閱的語法很簡單,C# 是用 += 運算子來訂閱事件,用 -= 運算子來取消訂閱。這些我們都已經很熟悉了。可是,在某些情況下,這種事件訂閱的寫法會導致記憶體洩漏(memory leak),亦即應該由 GC 回收的記憶體,卻遲遲沒有回收,導致記憶體用量不斷升高,甚至造成應用程式不穩定。這裡用幾個範例程式來呈現問題和解法,包括 WPF 4.5 新增加的 WeakEventManager<TEventSource, TEventArgs>。

2012-09-19 更新:文後附上範例程式的下載連結。

應用程式的分層設計 (1) - 入門範例

9/11/2012
這篇文章提供了一個簡單的入門範例,以展示分層設計的一種實作方式,以及幾個常見的基礎概念,如領域物件、資料存取物件等。有句老話還是要說一下:這裡示範的作法不見得很恰當,總是拋磚引玉;如果您願意分享自己的想法和經驗,都非常歡迎在此留言。

Enterprise Library 組件版本錯亂

9/10/2012
原先已經用 Enterprise Library 5.0 安裝程式把整套元件安裝好了,後來在為專案加入 EntLib 組件參考時,有些是用挑選組件的方式來加入參考,有些則是用 NuGet。結果用 NuGet 取得的部分組件版本比原先安裝的 EntLib 版本還要新,便產生了一些問題。

PowerShell: 偵測並啟動本機的 Windows 服務

9/07/2012
臨時碰到這個需求:偵測某 Windows 服務是否在執行中,若沒有,就啟動該服務。網路上隨便都可以找到一堆範例,就順便學了點 PowerShell。


Data Access Application Block 入門

9/05/2012
在 Enterprise Library 套件中,有一個功能區塊叫做 Data Access Application Block(DAAB),可協助開發人員寫出更彈性、一致的程式碼,並減少一些重複瑣碎的工作。本文將以範例說明 DAAB 的一些基本用法,以及在不使用 Entity Framework 或 NHibernate 等物件關聯對應框架的情形下,如何以傳統的 ADO.NET 資料存取技術搭配 DAAB 來實作簡易的資料存取物件(Data Access Objects)。

技術提供:Blogger.