feat(docstring):添加部分docstring (#376)

* feat(docstring):添加docstring

Signed-off-by: doudou0720 <98651603+doudou0720@users.noreply.github.com>

* fix(docstring):修复部分docstring格式错误

Signed-off-by: doudou0720 <98651603+doudou0720@users.noreply.github.com>

* fix(docstring):修复部分docstring

Signed-off-by: doudou0720 <98651603+doudou0720@users.noreply.github.com>

* chore(Docstring):MW_* 前14

* chore(Docstring):MW_* part 2

* chore(Docstring):MW_* part 3

* chore:优化缩进

* fix: 修复数学计算中的潜在除零错误和数值稳定性问题

Signed-off-by: doudou0720 <98651603+doudou0720@users.noreply.github.com>

* chore:删除Rebase时多余的OOBE函数

* chore: 更新代码注释和文档格式

修复XML文档注释中的格式问题,统一使用<c>和<see>标签
更新ConfigHelper类的预留说明,明确未来扩展用途
优化TimerDisplayDate_Elapsed方法的注释,说明UI异步更新机制
合并重复的注释摘要行,提高文档可读性
添加形状识别功能的64位进程限制说明
修正视频呈现器设备选择逻辑的文档说明

* chore(IPPTLinkManager): 更新TryEndSlideShow方法的XML注释格式

* chore: 修正代码注释中的术语和格式问题

更新多个文件中的XML注释,统一使用<see langword="..."/>标记代替<c>...</c>标记
规范术语使用(如"延迟初始化"代替"懒惰初始化")
修正注释中的格式错误和补充说明
调整代码区域的注释对齐格式

---------

Signed-off-by: doudou0720 <98651603+doudou0720@users.noreply.github.com>
This commit is contained in:
doudou0720
2026-02-22 10:14:12 +08:00
committed by GitHub
parent 3e3db27296
commit 656863a7d0
48 changed files with 6220 additions and 192 deletions
+365 -1
View File
@@ -34,10 +34,27 @@ namespace Ink_Canvas
{
#region Behavior
/// <summary>
/// 内部标记:是否正在内部更改更新通道
/// </summary>
private bool _isChangingUpdateChannelInternally;
/// <summary>
/// 内部标记:是否正在内部更改遥测设置
/// </summary>
private bool _isChangingTelemetryInternally;
/// <summary>
/// 内部标记:是否正在内部更改遥测隐私设置
/// </summary>
private bool _isChangingTelemetryPrivacyInternally;
/// <summary>
/// 检查隐私文件是否存在
/// </summary>
/// <returns>如果隐私文件存在则返回true,否则返回false</returns>
/// <remarks>
/// 尝试从程序集资源中查找privacy.txt文件
/// 如果找到则返回true,否则返回false
/// </remarks>
private static bool PrivacyFileExists()
{
try
@@ -55,6 +72,17 @@ namespace Ink_Canvas
}
}
/// <summary>
/// 查找隐私文件
/// </summary>
/// <returns>隐私文件路径,如果是嵌入资源则返回"embedded",如果未找到则返回null</returns>
/// <remarks>
/// 先尝试从文件系统读取,搜索路径包括:
/// 1. App.RootPath
/// 2. 程序集所在目录
/// 3. 程序集所在目录的上一级目录
/// 如果文件系统中未找到,则回退到嵌入资源
/// </remarks>
private static string FindPrivacyFile()
{
// 先尝试从文件系统读取
@@ -305,6 +333,17 @@ namespace Ink_Canvas
}
}
/// <summary>
/// 处理遥测上传级别选择更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 根据选择的遥测级别执行相应操作:
/// 1. 如果选择关闭遥测且当前不是正式通道,提示用户并切换到正式通道
/// 2. 如果选择开启遥测但未同意隐私说明,提示用户需要先同意隐私说明
/// 3. 保存设置并显示通知
/// </remarks>
private void ComboBoxTelemetryUploadLevel_SelectionChanged(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -421,6 +460,16 @@ namespace Ink_Canvas
ShowNotification("匿名使用数据上传设置已保存");
}
/// <summary>
/// 处理遥测隐私同意复选框状态更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当用户勾选或取消勾选隐私同意复选框时执行:
/// 1. 勾选时:显示隐私协议窗口,用户同意后保存设置
/// 2. 取消勾选时:提示用户会关闭遥测并切回正式通道,用户确认后执行相应操作
/// </remarks>
private void CheckBoxTelemetryPrivacyAccepted_Checked(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -551,6 +600,18 @@ namespace Ink_Canvas
}
}
/// <summary>
/// 处理自动更新开关状态更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当自动更新开关状态更改时:
/// 1. 保存自动更新设置
/// 2. 自动更新关闭时隐藏静默更新选项
/// 3. 如果关闭了自动更新,同时也关闭静默更新
/// 4. 根据静默更新设置显示或隐藏静默更新时间区域
/// </remarks>
private void ToggleSwitchIsAutoUpdate_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -575,6 +636,16 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
/// <summary>
/// 处理静默自动更新开关状态更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当静默自动更新开关状态更改时:
/// 1. 保存静默自动更新设置
/// 2. 根据静默更新设置显示或隐藏静默更新时间区域
/// </remarks>
private void ToggleSwitchIsAutoUpdateWithSilence_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -587,6 +658,14 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
/// <summary>
/// 处理静默自动更新开始时间选择更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当选择静默自动更新开始时间时,保存设置到文件
/// </remarks>
private void AutoUpdateWithSilenceStartTimeComboBox_SelectionChanged(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -595,6 +674,14 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
/// <summary>
/// 处理静默自动更新结束时间选择更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当选择静默自动更新结束时间时,保存设置到文件
/// </remarks>
private void AutoUpdateWithSilenceEndTimeComboBox_SelectionChanged(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -602,6 +689,16 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
/// <summary>
/// 处理开机启动开关状态更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当开机启动开关状态更改时:
/// 1. 如果开启,删除旧的启动项并创建新的启动项
/// 2. 如果关闭,删除所有启动项
/// </remarks>
private void ToggleSwitchRunAtStartup_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -617,6 +714,14 @@ namespace Ink_Canvas
}
}
/// <summary>
/// 处理启动时折叠开关状态更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当启动时折叠开关状态更改时,保存设置到文件
/// </remarks>
private void ToggleSwitchFoldAtStartup_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -624,6 +729,18 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
/// <summary>
/// 处理PowerPoint支持开关状态更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当PowerPoint支持开关状态更改时:
/// 1. 保存PowerPoint支持设置
/// 2. 如果关闭PowerPoint支持,同时也关闭WPS支持
/// 3. 如果开启PowerPoint支持,初始化PPT管理器并开始监控
/// 4. 如果关闭PowerPoint支持,停止监控
/// </remarks>
private void ToggleSwitchSupportPowerPoint_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -661,6 +778,20 @@ namespace Ink_Canvas
}
}
/// <summary>
/// 处理使用ROT PPT链接开关状态更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当使用ROT PPT链接开关状态更改时:
/// 1. 保存ROT PPT链接设置
/// 2. 停止PPT监控
/// 3. 如果开启ROT PPT链接且启用了PowerPoint增强,关闭PowerPoint增强
/// 4. 初始化PPT管理器
/// 5. 如果启用了PowerPoint支持,开始PPT监控
/// 6. 记录切换PPT联动架构的日志
/// </remarks>
private void ToggleSwitchUseRotPptLink_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -701,6 +832,14 @@ namespace Ink_Canvas
}
}
/// <summary>
/// 处理新幻灯片放映时显示画布开关状态更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当新幻灯片放映时显示画布开关状态更改时,保存设置到文件
/// </remarks>
private void ToggleSwitchShowCanvasAtNewSlideShow_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -713,6 +852,17 @@ namespace Ink_Canvas
#region Startup
/// <summary>
/// 处理笔尖模式开关状态更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当笔尖模式开关状态更改时:
/// 1. 同步更新两个笔尖模式开关的状态
/// 2. 保存笔尖模式设置
/// 3. 根据笔尖模式设置更新边界宽度
/// </remarks>
private void ToggleSwitchEnableNibMode_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -733,6 +883,16 @@ namespace Ink_Canvas
#region Appearance
/// <summary>
/// 处理显示笔尖模式切换开关状态更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当显示笔尖模式切换开关状态更改时:
/// 1. 保存显示笔尖模式切换设置
/// 2. 根据设置显示或隐藏笔尖模式切换面板
/// </remarks>
private void ToggleSwitchEnableDisPlayNibModeToggle_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -756,6 +916,14 @@ namespace Ink_Canvas
// SaveSettingsToFile();
//}
/// <summary>
/// 处理快速面板开关状态更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当快速面板开关状态更改时,保存设置到文件
/// </remarks>
private void ToggleSwitchEnableQuickPanel_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -763,6 +931,14 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
/// <summary>
/// 处理启动屏幕开关状态更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当启动屏幕开关状态更改时,保存设置到文件
/// </remarks>
private void ToggleSwitchEnableSplashScreen_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -770,6 +946,14 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
/// <summary>
/// 处理启动屏幕样式选择更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当选择启动屏幕样式时,保存设置到文件
/// </remarks>
private void ComboBoxSplashScreenStyle_SelectionChanged(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -777,6 +961,18 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
/// <summary>
/// 处理浮动栏缩放值滑块值更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当浮动栏缩放值滑块值更改时:
/// 1. 保存浮动栏缩放设置
/// 2. 应用缩放值到浮动栏(限制在0.5-1.25范围内)
/// 3. 等待UI更新后重新计算浮动栏位置,确保居中计算准确
/// 4. 只在屏幕模式下重新计算浮动栏位置
/// </remarks>
private void ViewboxFloatingBarScaleTransformValueSlider_ValueChanged(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -816,6 +1012,16 @@ namespace Ink_Canvas
}), DispatcherPriority.Render);
}
/// <summary>
/// 处理浮动栏透明度值滑块值更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当浮动栏透明度值滑块值更改时:
/// 1. 保存浮动栏透明度设置
/// 2. 应用透明度值到浮动栏
/// </remarks>
private void ViewboxFloatingBarOpacityValueSlider_ValueChanged(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -824,6 +1030,14 @@ namespace Ink_Canvas
ViewboxFloatingBar.Opacity = Settings.Appearance.ViewboxFloatingBarOpacityValue;
}
/// <summary>
/// 处理PPT中浮动栏透明度值滑块值更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当PPT中浮动栏透明度值滑块值更改时,保存设置到文件
/// </remarks>
private void ViewboxFloatingBarOpacityInPPTValueSlider_ValueChanged(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -831,6 +1045,17 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
/// <summary>
/// 处理托盘图标开关状态更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当托盘图标开关状态更改时:
/// 1. 保存托盘图标设置
/// 2. 根据设置显示或隐藏托盘图标示例图像
/// 3. 根据设置显示或隐藏系统托盘图标
/// </remarks>
private void ToggleSwitchEnableTrayIcon_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -841,6 +1066,17 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
/// <summary>
/// 处理展开按钮图像选择更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当选择展开按钮图像类型时:
/// 1. 保存展开按钮图像类型设置
/// 2. 根据选择的图像类型更新左右展开按钮的图标
/// 3. 为不同的图像类型设置不同的大小和旋转角度
/// </remarks>
private void ComboBoxUnFoldBtnImg_SelectionChanged(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -876,6 +1112,16 @@ namespace Ink_Canvas
private static readonly Lazy<object> HitokotoHttpClient = new Lazy<object>(CreateHitokotoClient, System.Threading.LazyThreadSafetyMode.ExecutionAndPublication);
/// <summary>
/// 创建用于获取一言(Hitokoto)数据的HttpClient
/// </summary>
/// <returns>创建的HttpClient实例,如果创建失败则返回null</returns>
/// <remarks>
/// 创建HttpClient时:
/// 1. 设置超时时间为5秒
/// 2. 尝试设置User-Agent头
/// 3. 捕获并记录创建过程中的异常
/// </remarks>
private static object CreateHitokotoClient()
{
try
@@ -906,6 +1152,13 @@ namespace Ink_Canvas
}
}
/// <summary>
/// 根据当前外观设置更新白板水印的名言文本。
/// </summary>
/// <remarks>
/// 当配置为内置来源时(0:OSUPlayer、1:名言警句、2:高考俗语)从对应数组中随机选择一条并设置为水印文本;
/// 当配置为一言(3)时会异步请求 Hitokoto API 并在请求中显示占位提示,成功时将返回文本设为水印,失败时记录警告日志并设置可读的失败提示文本。此方法会修改 BlackBoardWaterMark.Text,并在发生异常时记录日志且设置合适的回退文本。
/// </remarks>
private async Task UpdateChickenSoupTextAsync()
{
try
@@ -999,6 +1252,16 @@ namespace Ink_Canvas
}
}
/// <summary>
/// 处理名言来源选择更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当选择名言来源时:
/// 1. 保存名言来源设置
/// 2. 异步更新白板水印的名言文本
/// </remarks>
private async void ComboBoxChickenSoupSource_SelectionChanged(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -1176,6 +1439,17 @@ namespace Ink_Canvas
LoadSettings();
}
/// <summary>
/// 处理浮动栏图标选择更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当选择浮动栏图标时:
/// 1. 保存浮动栏图标设置
/// 2. 更新浮动栏图标
/// 3. 保存设置到文件
/// </remarks>
public void ComboBoxFloatingBarImg_SelectionChanged(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -1184,6 +1458,16 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
/// <summary>
/// 根据设置更新浮动栏图标
/// </summary>
/// <remarks>
/// 根据设置的浮动栏图标索引更新图标:
/// 1. 为不同的图标索引设置不同的图标源
/// 2. 为不同的图标设置不同的边距
/// 3. 支持自定义图标
/// 4. 自定义图标加载失败时使用默认图标
/// </remarks>
public void UpdateFloatingBarIcon()
{
int index = Settings.Appearance.FloatingBarImg;
@@ -1279,6 +1563,16 @@ namespace Ink_Canvas
}
}
/// <summary>
/// 更新组合框中的自定义图标选项
/// </summary>
/// <remarks>
/// 更新自定义图标选项时:
/// 1. 保留前12个内置图标选项
/// 2. 移除所有现有的自定义图标选项
/// 3. 添加新的自定义图标选项
/// 4. 为自定义图标选项设置字体
/// </remarks>
public void UpdateCustomIconsInComboBox()
{
// 保留前12个内置图标选项
@@ -1297,6 +1591,16 @@ namespace Ink_Canvas
}
}
/// <summary>
/// 处理添加自定义图标按钮点击事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当点击添加自定义图标按钮时:
/// 1. 显示添加自定义图标窗口
/// 2. 如果添加成功,自动选中新添加的图标
/// </remarks>
private void ButtonAddCustomIcon_Click(object sender, RoutedEventArgs e)
{
AddCustomIconWindow dialog = new AddCustomIconWindow(this);
@@ -1310,6 +1614,14 @@ namespace Ink_Canvas
}
}
/// <summary>
/// 处理管理自定义图标按钮点击事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当点击管理自定义图标按钮时,显示自定义图标管理窗口
/// </remarks>
private void ButtonManageCustomIcons_Click(object sender, RoutedEventArgs e)
{
CustomIconWindow dialog = new CustomIconWindow(this);
@@ -1317,6 +1629,18 @@ namespace Ink_Canvas
dialog.ShowDialog();
}
/// <summary>
/// 处理白板模式下时间显示开关状态更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当白板模式下时间显示开关状态更改时:
/// 1. 保存时间显示设置
/// 2. 如果当前是白板模式,根据设置显示或隐藏时间和日期水印
/// 3. 保存设置到文件
/// 4. 重新加载设置以应用更改
/// </remarks>
private void ToggleSwitchEnableTimeDisplayInWhiteboardMode_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -1339,6 +1663,18 @@ namespace Ink_Canvas
LoadSettings();
}
/// <summary>
/// 处理白板模式下名言显示开关状态更改事件
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">路由事件参数</param>
/// <remarks>
/// 当白板模式下名言显示开关状态更改时:
/// 1. 保存名言显示设置
/// 2. 如果当前是白板模式,根据时间显示设置显示或隐藏名言水印
/// 3. 保存设置到文件
/// 4. 重新加载设置以应用更改
/// </remarks>
private void ToggleSwitchEnableChickenSoupInWhiteboardMode_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -2508,6 +2844,12 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
/// <summary>
/// 将画笔不透明度更新为滑块的当前值,并保存到设置中。
/// </summary>
/// <remarks>
/// 使用滑块的当前值作为 alpha 通道更新 drawingAttributes.Color,同时将该值写入 Settings.Canvas.InkAlpha 并持久化配置文件。
/// </remarks>
private void InkAlphaSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if (!isLoaded) return;
@@ -2522,6 +2864,9 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
/// <summary>
/// 根据组合框的当前选择更新双曲线渐近线选项(Settings.Canvas.HyperbolaAsymptoteOption),并将更改保存到设置文件。
/// </summary>
private void ComboBoxHyperbolaAsymptoteOption_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (!isLoaded) return;
@@ -3350,6 +3695,13 @@ namespace Ink_Canvas
#region Reset
/// <summary>
/// 将应用设置重置为推荐的默认配置。
/// </summary>
/// <remarks>
/// 该方法会重新创建全局 Settings 实例并应用推荐值,覆盖大部分子模块配置(如外观、画布、自动化、PPT、手势、高级选项等)。
/// 在重置过程中会保留并恢复当前 Settings.Automation 中的 AutoDelSavedFiles 与 AutoDelSavedFilesDaysThreshold 两项值以避免意外删除策略变化。
/// </remarks>
public static void SetSettingsToRecommendation()
{
var AutoDelSavedFilesDays = Settings.Automation.AutoDelSavedFiles;
@@ -3497,6 +3849,12 @@ namespace Ink_Canvas
Settings.Startup.IsFoldAtStartup = false;
}
/// <summary>
/// 将应用设置重置为推荐的默认值,并保存与重新加载配置以应用更改。
/// </summary>
/// <remarks>
/// 如果配置重置受安全密码保护,则会提示用户输入密码;在验证失败时中止重置。方法会暂时停止加载标志以避免触发事件、将“开机启动”切换置为关闭,并在完成后显示一条通知。任何内部异常将被吞噬以保证流程不中断。
/// </remarks>
public async void BtnResetToSuggestion_Click(object sender, RoutedEventArgs e)
{
try
@@ -4586,6 +4944,12 @@ namespace Ink_Canvas
#endregion
/// <summary>
/// 将当前内存中的 Settings 序列化为格式化的 JSON 并写入应用程序配置文件(位于 App.RootPath 下的 Configs 目录或根设置文件)。
/// </summary>
/// <remarks>
/// 在写入前会确保目标目录/文件具有写入权限(使用 ProcessProtectionManager)。任何写入失败或异常都会被吞掉,调用方不会收到异常抛出。
/// </remarks>
public static void SaveSettingsToFile()
{
var text = JsonConvert.SerializeObject(Settings, Formatting.Indented);
@@ -5279,4 +5643,4 @@ namespace Ink_Canvas
#endregion
}
}
}