3
我正在写一个程序,从COM端口读取数据并显示在屏幕上。当数据读取频率较低时,它工作得很好,可以整天运行。但是,当数据每秒发送时,程序每30分钟崩溃一次。错误代码是c0000005访问冲突。C#串口线程,应用程序在一段时间后崩溃
void Start()
{
_serialPort = new SerialPort(TempPortName, 9600, Parity.None, 8, StopBits.One);
_serialPort.Handshake = Handshake.None;
_serialPort.ReadTimeout = 1000;
_serialPort.ReadBufferSize = 100000;
readThread = new Thread(Read);
readThread.Start();
}
void Read()
{
string MessageSection = "";
char[] end = {'\r'};
//string MessageSection = "";
while (readData)
{
Thread.Sleep(10);
if (_serialPort.IsOpen)
{
string message = "test";
try
{
message = ((char)(_serialPort.ReadByte())).ToString();
}
catch
{
message = "";
}
if (message != "")
{
message = MessageSection + message;
string[] MessageArray = message.Split(end);
if (!message.EndsWith("\r"))
{
MessageSection = MessageArray[MessageArray.Length - 1];
}
else
{
if(message.Length>0)
{
doSomething();
}
MessageSection = "";
}
}
else {
}
}
else
{
try
{
_serialPort.Open();
}
catch
{
print("Error");
}
}
}
}
我使用的是Unity 3D,是关于buffersize的吗?
通过删除您当前的'try' /'catch'块开始了 - 它是用不好的做法,包罗万象的'catch'块,这些可能藏匿的你的问题的真正原因。 – Enigmativity