123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- using Microsoft.Extensions.Hosting;
- namespace CompServ.Worker;
- internal class ConsoleTitleUpdateService : BackgroundService
- {
- private const int UpdatePerSecond = 2;
- protected override async Task ExecuteAsync(CancellationToken stoppingToken)
- {
- var lastRIn = 0;
- var lastBIn = 0L;
- var lastBOut = 0L;
- var lastDt = DateTime.Now;
- while (stoppingToken.IsCancellationRequested == false)
- {
- await Task.Delay(1000 / UpdatePerSecond, stoppingToken);
- var rIn = StatusHolder.RequestIn;
- var rOut = StatusHolder.RequestOut;
- var bIn = StatusHolder.BytesIn;
- var bOut = StatusHolder.BytesOut;
- var dt = DateTime.Now;
- var rRun = rIn - rOut;
- var riSpeed = (rIn - lastRIn) / (dt - lastDt).TotalSeconds;
- var biSpeed = (bIn - lastBIn) / (dt - lastDt).TotalSeconds;
- var boSpeed = (bOut - lastBOut) / (dt - lastDt).TotalSeconds;
- Console.Title =
- $"XZSx{StatusHolder.Ratio} [{dt:dd HH:mm:ss.f}]" +
- $" ReqRIO:{rRun}/{rIn}/{rOut}" +
- $" ByteIO:{bIn:N0}/{bOut:N0}" +
- $" SpeedRiBiBo:{riSpeed:N1}/{biSpeed}/{boSpeed}";
- lastRIn = rIn;
- lastBIn = bIn;
- lastBOut = bOut;
- lastDt = dt;
- }
- }
- }
|