public async Task ReadRtTagAsync() { try { if (!modbusClient.Connected) { modbusClient.Init(); } foreach (var block in settings.ReadBlocks) { var data = await ReadBlockAsync(block); ParseBlock(block, data); } prevException = null; processInfo.ScanDateTime = DateTime.Now; processInfo.ScanCounter += 1; processInfo.ScanRetry = 0; processInfo.ScanLastErrror = ""; await processInfo.SetValuesFromPropertiesAsync(new[] { nameof(processInfo.ScanCounter) }); } catch (Exception e) { if (e.Message != prevException?.Message) { logger.LogError(e, "Scan Fail!"); prevException = e; processInfo.ScanLastErrror = e.Message; } processInfo.ScanRetry += 1; processInfo.ScanCounter = 0; modbusClient.Terminate(); } }