Мне кажется, что вы ищете функцию ведения журнала, и существует множество хорошо округленных приложений / библиотек для ведения журналов, которые вам не нужно изобретать заново. Также они позаботятся о блокировке и т. Д., Так как вы постоянно пишете в файл, о котором вам нужно подумать, и он сделает это за вас.
Один из моих любимых - Serilog , который можно загрузить в виде пакета Nuget
. Вы можете найти установки и базовой настройки информацию по предоставленным ссылкам. Не забудьте установить Serilog
основной пакет, а также Serilog.Sinks.File
, так как вы хотите войти в файл.
Вот очень простой пример того, как его использовать, но, пожалуйста, прочитайте документацию, и она дает тоннывариантов может пригодиться для вас. Я создал цикл for для имитации ваших своевременных данных, но идея осталась прежней.
static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration().WriteTo.File("voltage.log").CreateLogger();
var line = "IDN = {0}, DCV = {1}";
var rnd = new Random();
for (int i = 0; i < 100; i++)
{
var idn = rnd.Next(0, 100);
var dcv = rnd.NextDouble();
Log.Information(string.Format(line, idn, dcv));
}
}
Первая строка создает экземпляр регистратора, вам нужно сделать это только один раз. Когда вы вызываете Log.Information()
, он открывает тот же файл, пишет строку и закрывает ее. Это имеет дополнительное преимущество регистрации времени. Вот пример выходных данных:
2019-10-08 10: 46: 28,697 -07: 00 [INF] IDN = 57, DCV = 0,985960515209455
2019-10-08 10: 46: 28,717 -07: 00 [INF] IDN = 88, DCV = 0,393538948331745
2019-10-08 10: 46: 28,717 -07: 00 [INF] IDN = 27, DCV = 0,321643328443935
2019-10-08 10: 46: 28.717 -07: 00 [INF] IDN = 35, DCV = 0.99525734735432