| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.Extensions.Hosting; |
| | | using Microsoft.Extensions.Logging; |
| | | using Microsoft.Extensions.Options; |
| | | using System; |
| | | using System.Threading; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Core; |
| | | using WIDESEA_ITaskInfoService; |
| | | |
| | | namespace WIDESEA_WMSServer.BackgroundServices |
| | | { |
| | | /// <summary> |
| | | /// èªå¨åºåºä»»å¡åå°æå¡ |
| | | /// å®ææ£æ¥å°æåºåå¹¶å建åºåºä»»å¡ |
| | | /// </summary> |
| | | public class AutoOutboundTaskBackgroundService : BackgroundService |
| | | { |
| | | private readonly ILogger<AutoOutboundTaskBackgroundService> _logger; |
| | | private readonly ITaskService _taskService; |
| | | private readonly AutoOutboundTaskOptions _options; |
| | | |
| | | public AutoOutboundTaskBackgroundService( |
| | | ILogger<AutoOutboundTaskBackgroundService> logger, |
| | | ITaskService taskService, |
| | | IOptions<AutoOutboundTaskOptions> options) |
| | | { |
| | | _logger = logger; |
| | | _taskService = taskService; |
| | | _options = options.Value; |
| | | } |
| | | |
| | | protected override async Task ExecuteAsync(CancellationToken stoppingToken) |
| | | { |
| | | _logger.LogInformation("èªå¨åºåºä»»å¡åå°æå¡å·²å¯å¨"); |
| | | |
| | | if (!_options.Enable) |
| | | { |
| | | _logger.LogInformation("èªå¨åºåºä»»å¡åè½å·²ç¦ç¨ï¼æå¡éåº"); |
| | | return; |
| | | } |
| | | |
| | | _logger.LogInformation("èªå¨åºåºä»»å¡æ£æ¥é´é: {Seconds} ç§", _options.CheckIntervalSeconds); |
| | | |
| | | while (!stoppingToken.IsCancellationRequested) |
| | | { |
| | | try |
| | | { |
| | | _logger.LogDebug("å¼å§æ£æ¥å°æåºå..."); |
| | | var result = await _taskService.CreateAutoOutboundTasksAsync(); |
| | | |
| | | if (result.Status) |
| | | { |
| | | _logger.LogInformation("å°æåºåæ£æ¥å®æ: {Message}", result.Message); |
| | | } |
| | | else |
| | | { |
| | | _logger.LogWarning("å°æåºåæ£æ¥å¤±è´¥: {Message}", result.Message); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _logger.LogError(ex, "èªå¨åºåºä»»å¡å建è¿ç¨ä¸åçå¼å¸¸"); |
| | | } |
| | | |
| | | var delay = TimeSpan.FromSeconds(_options.CheckIntervalSeconds); |
| | | _logger.LogDebug("çå¾
{Seconds} ç§åè¿è¡ä¸æ¬¡æ£æ¥", delay.TotalSeconds); |
| | | await Task.Delay(delay, stoppingToken); |
| | | } |
| | | |
| | | _logger.LogInformation("èªå¨åºåºä»»å¡åå°æå¡å·²åæ¢"); |
| | | } |
| | | |
| | | public override async Task StopAsync(CancellationToken cancellationToken) |
| | | { |
| | | _logger.LogInformation("æ£å¨åæ¢èªå¨åºåºä»»å¡åå°æå¡..."); |
| | | await base.StopAsync(cancellationToken); |
| | | } |
| | | } |
| | | } |