的代码:为什么访问com端口被拒绝?
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因为其具有多个根,然后得到一个节点上的值每个新的split xml并通过串行发送。它在第一个分割xml上工作,并且它的节点通过串行发送,然后停止访问,在尝试将第二个节点写入串行时拒绝com端口消息。
我有另一个应用程序,我用相同的串行代码,它工作正常(我只是累了,然后关闭它。)...所以它的奇怪。
也许你没有正确地关闭一些引用,并且打开accessor意味着拒绝来自同一应用/线程的更多访问? –