我正在编译一个最初在 Visual C# 2005 中构建的程序。我正在使用 Visual C# 2010。在以下函数上运行程序时,我不断收到“NullReference Execption was unhandled”错误: 错误发生在与数据缓冲区。DataBuffer 是一个私有字符串,在初始化时设置为 null。
if (DataBuffer.Contains(ok))
{
okFound = true;
}
和
string temp = getLine(DataBuffer.Substring(mylocation));
if (!checkTypeFound())
{
if (temp != null)
{
parseDeviceType(temp);
}
checkTypeFound();
}
当我检查上面代码中 DataBuffer 的值时(当我收到错误时),这不为空。它实际上包含我期望的数据。DataBuffer 信息在此函数中加载:
private void ser1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
while (ser1.BytesToRead > 0)
{
string data = ser1.ReadExisting();
DataBuffer += data;
}
}
串行端口在代码中的其他位置打开。代码没有变化,只是编译器不同。我应该添加哪一行,以及在哪里解决这个错误?请注意,我可以使用 if 和 try-catch 语句来防止发生此错误。但这不是我要找的,我需要这段代码才能工作。除了编译器之外,该应用程序没有以任何方式进行更改。