Beispiel #1
0
        public Task Run(CancellationToken token)
        {
            var tcs = new TaskCompletionSource <bool>();

            _logger.LogInformation($"{nameof(Run)}: Target={_targetRecord}");

            _ = Task.Run(async() =>
            {
                try
                {
                    while (!token.IsCancellationRequested)
                    {
                        _logger.LogInformation($"{nameof(Run)}: Pinging target={_targetRecord}");
                        await _probe.Ping(token);

                        await Task.Delay(TimeSpan.FromSeconds((double)_targetRecord.FrequencyInSeconds !), token);
                    }

                    tcs.SetResult(true);
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex, $"Monitoring (ping) failed, Target={_targetRecord}");
                    tcs.SetException(ex);
                    return;
                }
            });

            return(tcs.Task);
        }