using Microsoft.Extensions.Hosting; using System.Collections.Generic; using System.Runtime.Versioning; using System.Threading; using System.Threading.Tasks; namespace FastGithub.Dns { /// /// dns拦截后台服务 /// [SupportedOSPlatform("windows")] sealed class DnsInterceptHostedService : BackgroundService { private readonly DnsInterceptor dnsInterceptor; private readonly IEnumerable conflictValidators; /// /// dns拦截后台服务 /// /// /// public DnsInterceptHostedService( DnsInterceptor dnsInterceptor, IEnumerable conflictValidators) { this.dnsInterceptor = dnsInterceptor; this.conflictValidators = conflictValidators; } /// /// dns后台 /// /// /// protected override async Task ExecuteAsync(CancellationToken stoppingToken) { await Task.Yield(); foreach (var item in this.conflictValidators) { await item.ValidateAsync(); } this.dnsInterceptor.Intercept(stoppingToken); } } }