wanshenmean
7 天以前 37acb8358f5602a9013ee29c04a45e33483c2329
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SocketServer/SocketServerHostedService.cs
@@ -4,29 +4,60 @@
namespace WIDESEAWCS_Tasks.SocketServer
{
    /// <summary>
    /// Socket服务端托管服务
    /// Socket 服务器后台主机服务
    /// </summary>
    /// <remarks>
    /// 实现 IHostedService 接口,作为 ASP.NET Core 的后台服务运行。
    /// 负责在应用启动时启动 Socket 服务器,停止时关闭服务器。
    /// </remarks>
    public class SocketServerHostedService : IHostedService
    {
        /// <summary>
        /// TCP Socket 服务器实例
        /// </summary>
        private readonly TcpSocketServer _server;
        /// <summary>
        /// Socket 服务器配置选项
        /// </summary>
        private readonly SocketServerOptions _options;
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="server">TCP Socket 服务器实例</param>
        /// <param name="options">配置选项</param>
        public SocketServerHostedService(TcpSocketServer server, IOptions<SocketServerOptions> options)
        {
            _server = server;
            _options = options.Value;
        }
        /// <summary>
        /// 启动 Socket 服务器
        /// </summary>
        /// <remarks>
        /// 如果配置中服务器被禁用(Enabled=false),则不启动。
        /// </remarks>
        /// <param name="cancellationToken">取消令牌</param>
        /// <returns>启动任务</returns>
        public Task StartAsync(CancellationToken cancellationToken)
        {
            // 检查服务器是否启用
            if (!_options.Enabled)
            {
                return Task.CompletedTask;
            }
            // 启动服务器
            return _server.StartAsync(cancellationToken);
        }
        /// <summary>
        /// 停止 Socket 服务器
        /// </summary>
        /// <param name="cancellationToken">取消令牌</param>
        /// <returns>停止任务</returns>
        public Task StopAsync(CancellationToken cancellationToken)
        {
            return _server.StopAsync(cancellationToken);