SerialPort意外关闭

时间:2010-08-17 20:55:11

标签: c# .net bluetooth serial-port

我有一个C#应用程序,它使用SerialPort对象在另一台具有BlueTooth功能的计算机上运行的另一个应用程序副本之间建立连接。程序会不断地从主机上写出一些ascii数据,然后由远程机器接收。这个过程相当不错(虽然不是没有一些不必要的不​​稳定,但这不是这个问题的关键)。

很顺利,也就是说,直到我切换表格。该应用程序有三种主要形式。切换表单时,将隐藏旧表单并显示新表单。用户使用form2或form3上的[X]工具栏按钮关闭这些表单并返回到form1(不是我的设计决定。该项目基于VB6应用程序,我没有太多余地改变其功能)

当我从form1转到form2时,serialPort突然开始报告它已关闭。但是......它继续发送数据。也就是说,直到我切换回form1,此时我得到InvalidOperationException告诉我serialPort已关闭,无法写入。 serialPort对象是私有的,form1是唯一接触它的表单。

为了确保我没有经历并在事故中将其关闭,我在项目中注释掉了每一条serialPort.Close();行,但我仍然遇到同样的错误。有什么东西导致端口关闭(或报告它已关闭),我不知道是什么。此外,我无法打开它,因为它告诉我该端口当前正在使用。

我对BlueTooth或网络并不是很了解,所以这就是我在Google身边磕磕绊绊的结果。也许有人在这里知道SerialPort类的细微差别,足以知道我做错了什么。

感谢所有能提供帮助的人。

1 个答案:

答案 0 :(得分:2)

当表单关闭时,听起来SerialPort正在被销毁,因为表单拥有该对象。将它移出表单设计器并进入应用程序代码,你应该没问题。