✨ feat(*): 添加扫码枪启动探活、全局退出助手及 README
- 添加扫码枪串口启动探活,检测端口占用并更新 UI 状态 - 新增 ShutdownHelper 安全停止 Host 扩展方法 - 新增 README.md 项目说明文档 - 更新 WorkflowHostedService 启动探活逻辑 - 补充 ShutdownHelper 与 WorkflowHostedService 单元测试 - 优化 DashboardPage 与 SystemSettingsPage 界面布局 - 调整 ModbusTcpPlcService 监控镜像读取逻辑
This commit is contained in:
26
src/AxiOmron.PcbCheck/Utils/ShutdownHelper.cs
Normal file
26
src/AxiOmron.PcbCheck/Utils/ShutdownHelper.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
namespace AxiOmron.PcbCheck.Utils;
|
||||
|
||||
/// <summary>
|
||||
/// 提供应用退出阶段的异步宿主停止辅助能力,确保 await 后续逻辑保留在捕获到的同步上下文中。
|
||||
/// </summary>
|
||||
internal static class ShutdownHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 停止指定 Host,并在停止完成后于捕获的调用上下文中执行收尾回调。
|
||||
/// </summary>
|
||||
/// <param name="host">待停止的宿主实例。</param>
|
||||
/// <param name="timeout">停止超时时间。</param>
|
||||
/// <param name="afterStop">停止完成后的收尾回调。</param>
|
||||
/// <returns>表示停止流程完成的任务。</returns>
|
||||
/// <exception cref="ArgumentNullException">当 <paramref name="host"/> 为空时抛出。</exception>
|
||||
internal static async Task StopHostAsync(IHost host, TimeSpan timeout, Action? afterStop = null)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(host);
|
||||
|
||||
using var cancellationTokenSource = new CancellationTokenSource(timeout);
|
||||
await host.StopAsync(cancellationTokenSource.Token);
|
||||
afterStop?.Invoke();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user