private async Task StartInfluxDBMeasurementsCollector() { using (var sync = await influxDBMeasurementsCollectorLock.EnterAsync(ShutdownCancellationToken)) { bool recreate = (influxDBMeasurementsCollector == null) || (!influxDBMeasurementsCollector.LoginInformation.Equals(pluginConfig.DBLoginInformation)); if (recreate) { if (pluginConfig.DBLoginInformation.IsValid) { influxDBMeasurementsCollector?.Dispose(); influxDBMeasurementsCollector = new InfluxDBMeasurementsCollector(pluginConfig.DBLoginInformation, ShutdownCancellationToken); influxDBMeasurementsCollector.Start(pluginConfig.DevicePersistenceData.Values); } } else { influxDBMeasurementsCollector.UpdatePeristenceData(pluginConfig.DevicePersistenceData.Values); } } // do not leave thread to avoid leaving thread as it can delay startup #pragma warning disable CA2007 // Consider calling ConfigureAwait on the awaited task await RecordTrackedDevices(); #pragma warning restore CA2007 // Consider calling ConfigureAwait on the awaited task }
private void StartInfluxDBMeasurementsCollector() { lock (influxDBMeasurementsCollectorLock) { bool recreate = (influxDBMeasurementsCollector == null) || (!influxDBMeasurementsCollector.LoginInformation.Equals(pluginConfig.DBLoginInformation)); if (recreate) { collectionShutdownToken?.Cancel(); collectionShutdownToken = new CancellationTokenSource(); if (pluginConfig.DBLoginInformation.IsValid) { influxDBMeasurementsCollector = new InfluxDBMeasurementsCollector(pluginConfig.DBLoginInformation); influxDBMeasurementsCollector.Start(pluginConfig.DevicePersistenceData.Values, CancellationTokenSource.CreateLinkedTokenSource(collectionShutdownToken.Token, ShutdownCancellationToken).Token); } } else { influxDBMeasurementsCollector.UpdatePeristenceData(pluginConfig.DevicePersistenceData.Values); } RecordTrackedDevices().Wait(); } }