WPF開發庫推薦
NHotkey.Wpf
WPF的全局快捷鍵功能,可以使用NHotkey.Wpf。
安裝
Install-Package NHotkey.Wpf
網址
https://github.com/thomaslevesque/NHotkey
示例代碼
HotkeyManager.Current.AddOrReplace("SwitchWindow", Key.X, ModifierKeys.Control | ModifierKeys.Alt, OnSwitchWindow);
相當于一句代碼實現了全局熱鍵的功能。
第一個參數是名稱,自己按需要取。
第二和第三個參數是組合熱鍵。
第四個參數是熱鍵對應的執行函數。
采用MVVM模式時,也可以在XAML界面上通過下面的代碼來設定:
...
<Window.InputBindings>
<KeyBinding Gesture="Ctrl+Alt+Add" Command="{Binding IncrementCommand}"
HotkeyManager.RegisterGlobalHotkey="True" />
<KeyBinding Gesture="Ctrl+Alt+Subtract" Command="{Binding DecrementCommand}"
HotkeyManager.RegisterGlobalHotkey="True" />
</Window.InputBindings>
...
最主要是把HotkeyManager.RegisterGlobalHotkey附加屬性設置為True。
Yitter.IdGenerator
可以用Yitter.IdGenerator來替代GUID,生成方式簡單,使用的是long,查詢會更方便。
通過機器ID,時間,把隨機號來生成ID,號稱重碼率非常低。
安裝
Install-Package Yitter.IdGenerator
網址
https://github.com/yitter/IdGenerator
示例1
第1步,全局 初始化(應用程序啟動時執行一次):
// 創建 IdGeneratorOptions 對象,可在構造函數中輸入 WorkerId:
var options = new IdGeneratorOptions(Your_Unique_Worker_Id);
// options.WorkerIdBitLength = 10; // 默認值6,限定 WorkerId 最大值為2^6-1,即默認最多支持64個節點。
// options.SeqBitLength = 6; // 默認值6,限制每毫秒生成的ID個數。若生成速度超過5萬個/秒,建議加大 SeqBitLength 到 10。
// options.BaseTime = Your_Base_Time; // 如果要兼容老系統的雪花算法,此處應設置為老系統的BaseTime。
// ...... 其它參數參考 IdGeneratorOptions 定義。
// 保存參數(務必調用,否則參數設置不生效):
YitIdHelper.SetIdGenerator(options);
// 以上過程只需全局一次,且應在生成ID之前完成。
第2步,生成ID:
// 初始化后,在任何需要生成ID的地方,調用以下方法:
var newId = YitIdHelper.NextId();
示例2
// 第一步:全局初始化(只需執行一次)
using Yitter.IdGenerator;
var options = new IdGeneratorOptions
{
WorkerId = 1, // 機器ID,必須唯一(0-63)
WorkerIdBitLength = 6, // WorkerId 位數,默認 6 位
SeqBitLength = 6, // 序列號位數,默認 6 位
BaseTime = new DateTime(2000, 1, 1), // 基準時間(毫秒,1970-01-01 = 0)
Method = 1 // 算法類型,1 為漂移算法
};
// 設置 ID 生成器
YitIdHelper.SetIdGenerator(options);
// 第二步:生成唯一 ID
long newId = YitIdHelper.NextId();
Console.WriteLine($"Generated ID: {newId}");
// 生成多個 ID 示例
for (int i = 0; i < 5; i++)
{
Console.WriteLine($"ID {i + 1}: {YitIdHelper.NextId()}");
}

浙公網安備 33010602011771號