static void Main(string[] args)
{
Console.WriteLine("Memory mapped file reader started");
using (var file = MemoryMappedFile.OpenExisting("AIDA64_SensorValues"))
{
using (var readerz = file.CreateViewAccessor(0, 0))
{
var bytes = new byte[567];
var encoding = Encoding.ASCII;
readerz.ReadArray<byte>(0, bytes, 0, bytes.Length);
File.WriteAllText("C:\\myFile.txt", encoding.GetString(bytes));
var readerSettings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment };
using (var reader = XmlReader.Create("C:\\myFile.txt", readerSettings))
{
while (reader.Read())
{
using (var fragmentReader = reader.ReadSubtree())
{
if (fragmentReader.Read())
{
reader.ReadToFollowing("value");
SerialPort port = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.One);
port.Open();
port.Write(reader.ReadElementContentAsString() + ",");
}
}
}
}
}
}
Console.WriteLine("Press any key to exit ...");
Console.ReadLine();
}
는, 공유 메모리를 읽고 공유 메모리는 다음 같은 파일을 XML 리더 열립니다, 파일에 씁니다과 여러 뿌리를 가지고 있기 때문에 XML을 분할 후 노드의 가치를 얻을 수 각각의 새 분할 XML 및 직렬 통해 보냅니다. 첫 번째 분할 XML에서 작동하고 노드가 직렬로 전송 된 다음 두 번째 노드를 직렬로 쓰려고 시도 할 때 COM 포트 메시지에 대한 액세스가 거부되어 중지됩니다.
나는 동일한 시리얼 코드로 만든 다른 앱을 가지고 있으며, 잘 작동한다. (나는 그저 피곤하다.) ... 그래서 이상하다.
어쩌면 일부 참조가 제대로 닫히지 않았으며 접근자가 동일한 앱/스레드에서 더 많은 액세스를 거부한다는 의미입니까? –