C# Visio 二次開發系列(二):巨集錄製分析與子形狀分離重組技術
目標效果展示 實現組合圖形內部子形狀的位置互換(左右對調)。 巨集錄製:手動操作轉代碼 透過 Visio 巨集錄製功能,捕獲手動分解、移動、重組的完整操作序
C# Visio 二次開發系列(三):群組形狀 ShapeSheet 關鍵參數分析
ShapeSheet 深度探索 進一步分析群組形狀的 ShapeSheet 參數,發現關鍵屬性 GroupSelectMode(對應 visGroupSelec
C# Visio 二次開發系列(四):群組形狀選取模式切換與子形狀操作實戰
群組選取模式屬性 透過 ShapeSheet 發現 GroupSelectMode 屬性控制群組選取行為: 0:僅選取群組整體(預設) 1:優先選取群組,再選
C# 實現空白表單中文輸入(一):從無法開啟 IME 到解決重複字元問題
問題背景:空白表單無法啟動輸入法 C# WinForms 的空白表單預設無法開啟輸入法錄字視窗,設定 this.ImeMode = ImeMode.NoCont
C# 實現空白表單中文輸入(二):完整程式碼與 IMM API 實戰
核心程式碼實作 以下完整程式碼展示如何在空白 WinForms 控制項上實現中文輸入法支援,包含 IME 上下文關聯、組合字串擷取與繪製: using Syst
C# 多線程程式設計系列(五):Monitor 同步技術詳解——TryEnter 與鎖超時實戰
Monitor 與 lock 的關係 Monitor 類別提供比 lock 更精細的控制。若僅需基本互斥,lock 足矣;但需鎖超時、非阻塞嘗試等進階功能時,M
C# 多線程程式設計系列(五):Monitor 同步技術進階——TryEnter 超時機制避免死鎖
前言:從死鎖範例到解決方案 承接上一講的死鎖範例,本文展示如何使用 Monitor.TryEnter 方法設定鎖定超時時間,從根本上避免死鎖發生。當等待超過指定
C# 多線程程式設計系列(四):深入理解同步與死鎖機制
前言:多線程帶來的挑戰 雖然多線程能顯著提升程式執行效率,但也引入了資料競爭與死鎖等複雜問題。本文透過實例程式碼,深入剖析非同步操作導致的「髒資料」現象,並從
C# 執行緒系列講座 (4):同步原理與 lock 關鍵字實作
非原子操作問題 n++ 編譯為 4 條 IL 指令:ldloc, ldc.i4.1, add, stloc。執行緒切換導致指令交錯,造成更新遺失: 執行緒1:
C# 執行緒系列講座 (4):同步與死結完整分析
死結形成過程 static object objA = new object(), objB = new object(); static void Lock
C# 執行緒系列講座 (3):ThreadPool 基本用法與最大執行緒數查詢
ThreadPool 動機 伺服器每請求建立執行緒會耗盡資源。預先建立執行緒池,請求到來時取用,大幅降低開銷。 預設上限 (.NET Framework 版本
C# 執行緒系列講座 (3):執行緒集區與檔案下載伺服器實作
FileServer 使用範例 FileServer fs = new FileServer(@d:\download); fs.Start(); // 預設
C# 執行緒系列講座 (2):Thread 類別基本用法入門
ThreadStart 委派 [ComVisible(true)] public delegate void ThreadStart(); 靜態方法範例
C# 執行緒系列講座 (2):Thread 基本用法、匿名委派、Lambda 與命名
Thread 基本建立與啟動 靜態方法:new Thread(StaticMethod).Start() 實例方法:new Thread(new Class(
C# 執行緒系列講座 (2):Thread 參數傳遞完整指南
ParameterizedThreadStart 委派 [ComVisible(false)] public delegate void Parameteri
C# 執行緒系列講座 (2):Thread 參數傳遞、前景/背景執行緒與 MyThread 封裝
MyThread 封裝簡化參數傳遞 class NewThread : MyThread { private string p1; private i
C# 執行緒系列講座 (2):Thread 類別應用進階與 Join 等待機制
潛在競態風險與建構函式初始化 原範例中計數器啟動於 run() 方法,若某執行緒排程延遲未執行,主執行緒可能誤判全部完成。解法:將初始化移至建構函式,執行緒建立