繁体   English   中英

SerialPort.Close()从组件中删除串行端口。

[英]SerialPort.Close() removes the serial port from components.Components

在C#中,我的Windows窗体上有一个System.IO.Ports.SerialPort组件。 我在代码中有几个地方像这样循环:

foreach (SerialPort in components.Components)
{
    // Do something.
}

但是当我运行mySerialPort.Close() ,每个SerialPort都从components.Components类中删除,因此所有后续循环都将其丢失。 这是错误吗? 还是这是故意的? 为什么设计时会表现出来?

内部文档说, Close()方法仅在其中处置Stream对象。

这是设计使然。 像所有其他.NET Framework类一样,SerialPort.Close()方法调用其Dispose()方法。 从其基类Component继承。 使用处置模式,调用虚拟Dispose(bool)方法。 哪个SerialPort重写以关闭其流。 并调用Component用于从集合中删除组件的base.Dispose(bool)方法。

否则,这是自然行为,可以将SerialPort放在窗体上,以便在窗体关闭时自动将其丢弃。 在创建窗口时打开端口并保持打开状态直到关闭,这也是完全正常的。 在程序执行中途关闭端口只会造成麻烦。 但是如果得到其他支持,您只需要自己跟踪该对象即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM