У меня есть таймер, который перебирает следующий код каждую секунду.этот код читает несколько фрагментов XML один за другим, затем выводит их на экран, а затем повторяет это через секунду.output:
34,
23,
12,
Я хочу сделать так, чтобы все данные записывались в строку типа 34,23,12, а затем возвращала ее, чтобы другой класс мог ее использовать.Но если я помещу его (строковый код, вы увидите его ниже) в код if (fragmentReader.Read())
, он не будет работать, поскольку он просто делает то же самое, что и console.writeline над ним: читает один из фрагментов, затем пишетна консоль, затем следующий фрагмент, он не добавляет все значения из фрагмента в одну строку.
спасибо
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
using (var file = MemoryMappedFile.OpenExisting("AIDA64_SensorValues"))
{
using (var readerz = file.CreateViewAccessor(0, 0))
{
var bytes = new byte[195];
var encoding = Encoding.ASCII;
readerz.ReadArray<byte>(0, bytes, 0, bytes.Length);
//File.WriteAllText("C:\\myFile.txt", encoding.GetString(bytes));
StringReader stringz = new StringReader(encoding.GetString(bytes));
var readerSettings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment };
using (var reader = XmlReader.Create(stringz, readerSettings))
{
while (reader.Read())
{
using (var fragmentReader = reader.ReadSubtree())
{
if (fragmentReader.Read())
{
reader.ReadToFollowing("value");
//Console.WriteLine(reader.ReadElementContentAsString() + ",");
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append(reader.ReadElementContentAsString()).Append(",");
Console.WriteLine(sb.ToString());
}
}
}
}
}
}
}