Vb.net 如何在不中断/冻结程序的情况下关闭端口?

Vb.net 如何在不中断/冻结程序的情况下关闭端口?,vb.net,Vb.net,我已经编写了一个Visual Basic程序,该程序通过串行端口从PIC24微控制器中恢复数据,并将数据打印到RichTextBox,稍后可以将其保存到.txt文件中。 当我尝试关闭端口的一半时间时,它关闭得很好,我可以保存RichTextBox中的文本,但很多时候程序会冻结,需要重新启动。 下面的代码是我用来关闭通讯端口的代码 Dim Thread1 As New System.Threading.Thread(AddressOf run_Disconnect) Private Sub ru

我已经编写了一个Visual Basic程序,该程序通过串行端口从PIC24微控制器中恢复数据,并将数据打印到RichTextBox,稍后可以将其保存到.txt文件中。 当我尝试关闭端口的一半时间时,它关闭得很好,我可以保存RichTextBox中的文本,但很多时候程序会冻结,需要重新启动。 下面的代码是我用来关闭通讯端口的代码

Dim Thread1 As New System.Threading.Thread(AddressOf run_Disconnect)

Private Sub run_Disconnect()
    MyApplication.DoEvents()
    Tester_Comm.Close()
End Sub

我如何才能获得这样的信息,使我能够关闭通讯端口而不经常冻结?

这就是我关闭我不使用的通讯端口的方式。尽管如此。它从来没有引起过问题。在尝试关闭端口之前,您可能需要检查是否正在停止使用该端口的所有例程/线程!另外,在代码中添加更多的错误检查Try/Catch/Finally…问题出在DataReceived事件处理程序中。不要进行诸如Invoke之类的阻塞调用,而是使用BeginInvoke。您是否在使用VB.NET工具箱中的SerialPort组件?这就是我用来连续阅读的东西。如果您使用它,则不需要启动新线程来关闭端口