首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >此错误的常见来源包括COM-interop或Pinvoke的用户封送处理错误,这可能会损坏堆栈

此错误的常见来源包括COM-interop或Pinvoke的用户封送处理错误,这可能会损坏堆栈
EN

Stack Overflow用户
提问于 2018-12-22 20:14:06
回答 1查看 229关注 0票数 1

我正在尝试制作一个GUI来与我的伺服驱动器进行交互。程序运行良好,没有任何编译错误,但在运行大约10到15秒后,我得到了我不知道的错误。

我读过几篇关于在C#中使用串口调用并避免其中的一些错误的文章。在阅读了这些帖子后,我遵循了他们关于如何使用的建议,但我仍然有问题。

我已经在github和 this is the link for github上传了我的程序。

下面是我的错误代码的快照。

当在线阅读寻找错误的原因时,我看到一些人说,对于他们来说,错误发生在代码的随机位置,但与他们不同的是,错误总是在ReadPort函数中,该函数在另一个线程中启动,而不是在主线程中处理。

EN

回答 1

Stack Overflow用户

发布于 2018-12-22 22:00:12

我不知道问题出在哪里,但我对SerialPortManager类中的ReadPort()方法进行了一些更改,如下所示,到目前为止,图形用户界面运行良好。

代码语言:javascript
复制
public void ReadPort()
{
  string ReceivedMessage = "No Message";
  if (_serialPort == null)
   {
     return;
   }
  while (_keepReading)
   {
        List<byte> receiveBuffer = new List<byte>();
        int bytesToRead = _serialPort.BytesToRead;
        byte[] tempBuffer = new byte[bytesToRead];
        _serialPort.Read(tempBuffer, 0, bytesToRead);
        receiveBuffer.AddRange(tempBuffer);

        ReceivedMessage = _serialPort.Encoding.GetString(receiveBuffer.ToArray());
        
        if (OnDataReceived != null)
            OnDataReceived(this, ReceivedMessage);
	}
}

代码的其余部分与github中上传的代码相同

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53895554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档