我有一個計時器,每秒循環下面的代碼。這段代碼依次讀取幾個xml片段,然後將它們打印到屏幕上,然後在一秒鐘後重復此操作。輸出:如何向字符串寫入值然後返回?
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());
}
}
}
}
}
}
}
隨着將Writeline留在循環中,輸出將是34,34,23,34,23,12,這不是預期的輸出。 –
你是對的我沒有注意到它 –