C# 串口连接是否会在SerialPort.close()方法之外关闭?
这更多的是理论上的问题,而不是实践上的问题,因为我目前无法测试它,因为我没有一个相当大的设备来测试我正在创建的程序。我的问题是,串行端口在其生命周期内是否会在不调用C# 串口连接是否会在SerialPort.close()方法之外关闭?,c#,serial-port,C#,Serial Port,这更多的是理论上的问题,而不是实践上的问题,因为我目前无法测试它,因为我没有一个相当大的设备来测试我正在创建的程序。我的问题是,串行端口在其生命周期内是否会在不调用SerialPort.close()的情况下关闭?此外,在调用方法之前是否存在连接超时的风险 另外,是否有任何理由在发出命令后关闭它,在需要提交新命令时重新打开它,或者始终保持打开状态是安全的?串行连接(指物理连接或端口对象)从不超时,即使拔下电缆。但是,如果串行端口是USB转换器,则如果USB端被拔下,设备将被禁用,这将中断串行连接
SerialPort.close()
的情况下关闭?此外,在调用方法之前是否存在连接超时的风险
另外,是否有任何理由在发出命令后关闭它,在需要提交新命令时重新打开它,或者始终保持打开状态是安全的?串行连接(指物理连接或端口对象)从不超时,即使拔下电缆。但是,如果串行端口是USB转换器,则如果USB端被拔下,设备将被禁用,这将中断串行连接
SerialPort是IDisposable的,因此如果您处置它,它将关闭
只有在进行读取且没有数据时,才会发生串行超时。这对SerialPort设备或连接没有影响。(写入时也可能发生串行超时,但这种情况不太常见。只有在涉及握手且接收器阻止接收时才会发生此情况。)串行连接(指物理连接或端口对象)从不超时,即使拔下电缆。但是,如果串行端口是USB转换器,则如果USB端被拔下,设备将被禁用,这将中断串行连接
SerialPort是IDisposable的,因此如果您处置它,它将关闭
只有在进行读取且没有数据时,才会发生串行超时。这对SerialPort设备或连接没有影响。(写入时也可能发生串行超时,但这种情况不太常见。只有在涉及握手且接收器阻止接收时才会发生。)第二部分:不太可能,除非系统上有其他服务在争夺该端口。否则,一旦应用程序关闭/崩溃,端口将被释放。此外,建议您避免关闭端口,然后期望立即重新打开。如果您拔下电缆怎么办?根据我的经验,只要com端口存在,比如说
Com1
,并且对它的访问没有被另一个程序锁定,C#并不特别关心设备甚至电缆是否连接到串行端口。我从来没见过它超时。发生读取超时,但不影响串行端口的打开/关闭状态。我已经很久没有机会有效地测试它了。FWIW,我们部署的数据采集服务应用程序,连续几个月保持串行端口开放,没有任何问题。不过,该服务确实非常频繁地对它们进行读取和/或写入。第二部分:不太可能,除非系统上有其他服务在争夺该端口。否则,一旦应用程序关闭/崩溃,端口将被释放。此外,建议您避免关闭端口,然后期望立即重新打开。如果您拔下电缆怎么办?根据我的经验,只要com端口存在,比如说Com1
,并且对它的访问没有被另一个程序锁定,C#并不特别关心设备甚至电缆是否连接到串行端口。我从来没见过它超时。发生读取超时,但不影响串行端口的打开/关闭状态。我已经很久没有机会有效地测试它了。FWIW,我们部署的数据采集服务应用程序,连续几个月保持串行端口开放,没有任何问题。但是,该服务确实非常频繁地读取和/或写入它们。由于在退出程序之前,完全没有理由处置我在程序中建立的串行端口连接,因此,在我不提交命令时,是否有理由关闭并重新打开它?除非您与其他程序共享端口,我看不出原因。因为在退出程序之前,完全没有理由处理我在程序中建立的串行端口连接,所以当我不提交命令时,是否有理由关闭并重新打开它?除非您与其他程序共享端口,否则我看不出原因。