前陣子有個朋友問了我一個有趣的問題,他們想要做一個獨立於 UI 執行緒外的永不停止執行緒,這個執行緒等待接收外部的訊號並呼叫對應的 API 執行;用個名詞來說就是一個獨立的訊息迴圈,我大概想了幾個做法,今天就來聊聊其中一個想法的實踐。
創造一個訊息迴圈
- 471
- 0
- 2021-11-11
前陣子有個朋友問了我一個有趣的問題,他們想要做一個獨立於 UI 執行緒外的永不停止執行緒,這個執行緒等待接收外部的訊號並呼叫對應的 API 執行;用個名詞來說就是一個獨立的訊息迴圈,我大概想了幾個做法,今天就來聊聊其中一個想法的實踐。
這一篇介紹 WPF 上的手寫辨識實作,為了符合大家開發的習慣,範例會採用 MVVM 的方式完成。
幾何繪圖的部分差不多理解後,這一篇就要來完成整個控制項的設計。
前一篇簡單的利用了既有的固定座標繪製弧形,以進度環的觀點來看,基本上應該是以夾角的角度來計算才對,這會應用到數學上的直角座標與極座標轉換。
自訂控制項樂趣多,這一回要來手工製作一個進度環。
前一篇做了一個可以支援 Drag and Drop 的 Canvas,但方便性還是不夠,稍微來改進一下,製作一個泛用性更廣的類別吧。
上一篇介紹了使用事件為主的 Drag and Drop 做法,有了基本的知識後,這一篇要利用附加屬性來製作一個 Drag and Drop Canvas。
很久沒寫文章了,這幾篇就來談談 WPF 中 Drag and Drop 的實作吧。
習慣寫 ControlTemplate 的朋友應該都滿習於使用 TemplateBinding,但是 TemplateBinding 有某些限制導致無法使用在 Trigger 中,本篇用個簡單的範例來說明如何解決類似的問題。
這是一些由 Microsoft Learn 上提供給 C# 初學者的課程目錄整理,初學者可以多多利用。
GetEnumerator 在 C# 9 開始,能以擴充方法的形式存在。
繼續說明 not patterns 和 simple type patterns。
再來也是個挺刺激的話題,pattern matching 在 C# 9.0 的增強。
繼續 record 的其他話題
前一篇我們提到了 init only setter,這一篇隆重登場的是 C# 9.0 的重量級人物 -- record。
C# 9.0 已經進入準備正式公開的階段,讓我們來預覽一下有哪些新鮮玩意兒。
前一篇文章談到了在 Windows Forms 上使用內嵌字型,這一篇來聊聊在 WPF 上的作法。
我們有時會希望在應用程式中使用非作業系統預設的字型,而又不希望另外安裝,這時可以把字型檔嵌入到應用程式中使用,也不須煩惱這個字型的安裝問題。
上一篇談了普遍的 DataTemplate Selector 實作,這一篇聊點進階的玩意。
WPF 中應用 DataTemplate Selector 的基本形式介紹。