[食譜好菜] C# 複製 HTML 格式的文字到剪貼薄中

部落格的文章我一直是用 Markdown Monster 寫完後,直接 Ctrl + Shift + C,Markdown Monster 會直接幫我將文章轉成 HTML 內容寫入到剪貼薄中,接著在點部落的編輯器上切換原始碼,再把 HTML 內容貼上去,但是最近點部落的編輯器改版了,沒辦法直接貼上 HTML 原始碼,可是 Markdown Monster 複製的 HTML 內容居然貼得上去,這其中必有緣故。

...繼續閱讀 »

[小菜一碟] Windows Forms 的 DataGridViewComboBoxColumn 選項變更後立即更新到 DataSource

Windows Forms 的 DataGridView 開啟編輯資料之後,我們就可以在畫面上直接對資料進行修改,預設的統一操作行為是修改完資料之後,按下 Enter 鍵或是離開該儲存格,資料就會更新到綁定的 DataSource 上,就像下面這樣:

但是呢,使用者會希望能在修改之後立即更新到 DataSource,不要再多敲 Enter 鍵或離開儲存格的動作,尤其是 ComboBox,我們來看一下怎麼弄?

...繼續閱讀 »

[廚餘回收] 在 Windows Forms 做控制項的資料綁定後,發生「跨執行緒作業無效」的錯誤。

如果我們的 Data Source 是非同步更新的話,那麼我們就很容易收到下面的錯誤訊息。

跨執行緒作業無效: 存取控制項 'xxx' 時所使用的執行緒與建立控制項的執行緒不同。(Cross-thread operation not valid: Control 'xxx' accessed from a thread other than the thread it was created on.)

一般遇到這個情況,我們通常就是判斷 Control.InvokeRequired 屬性,然後改用 Control.Invoke()Control.BeginInvoke() 方法來修改控制項的屬性,如果是在有資料綁定的情況呢?怎麼解決這個跨執行緒的問題?

...繼續閱讀 »

[料理佳餚] 用 .NET Core Worker Service 在 Linux 及 Windows 上建置背景服務

以往用 .NET Framework 開發的時候,都是用 TopShelf 來建置 Windows 服務,現在 .NET Core 弄了一個叫 .NET Generic Host 的東西,我們可以直接將服務透過它來 Host 成背景服務,而且它是跨平台的,不只可以部署在 Windows 上,Linux 上也行得通,ASP.NET Core 應用程式就是用它來讓服務可以長時間執行。

...繼續閱讀 »

[料理佳餚] 在 Windows Server 2016/2019 建立 RAM Disk

在雲端上的虛擬機器,其磁碟機會是個瓶頸,以 GCE 為例,如果應用程式需要讀寫大量的小檔,就會發現磁碟機的 IOPS 不太夠用,這時候就要增加磁碟機空間或是增加 CPU 的核心數,磁碟機的 IOPS 才會隨之增加,但是為此所增加的磁碟機空間或是 CPU 的核心數,我們根本就用不了那麼多,所以我就想說建立 RAM Disk,檔案從裡面存取,在離峰時間才執行指令將檔案備份到永久磁碟去,Windows Server 上有方法可以建立 RAM Disk,我們來看看怎麼做?

...繼續閱讀 »

[廚餘回收] 原本應該睡眠的 Windows 10 卻在清晨被喚醒

身為一名程式設計師,打開瀏覽器 Google 一些資料,或是開啟 IDE 寫點程式是常有的事,而當事情做到一半必須被打斷時,「睡眠」這個功能就可以讓電腦在下一次開機的時候,快速地回復到前一次的工作狀態,但是 Windows 10 自從更新了 1903 之後,電腦卻經常在清晨被喚醒,等到我發現的時候,早就不知道運轉了多久、浪費了多少電,甚至直到最近我也更新了 1909,問題依舊還在。

...繼續閱讀 »