0

我有一些 C# 和 Visual Basic 代码,包括这个函数:

Public Function InitL(ByVal portNrL As Integer) As Output
    Try
        If ComPortL.IsOpen = True Then
            ComPortL.Close()
        End If

        ComPortL.PortName = "Com" & portNrL

        If ComPortL.IsOpen = False Then
            ComPortL.Open()
        End If

        Return New Output(Output.ResultEnum.Successful, "")
    Catch ex As Exception
        Return New Output(Output.ResultEnum.Unsuccessful, ex.Message)
    End Try
End Function

我在这样的另一个类中使用它:

Output result = x.InitL(Int32.Parse(portnumber));
if (result.Result == Output.ResultEnum.Unsuccessful)
{
    MessageBox.Show(result.ErrorMessage);
    enableAllButtons();
    return;
}

当我选择一个繁忙的 com 端口号时,我的程序挂起。当我输入一个断点并检查它时,它会显示消息框,然后每次都可以正常工作,直到我再次选择一个繁忙的 com 端口号,此时程序间歇性地挂起。

这是输出类:

Public Class Output
    Public Result As ResultEnum
    Public ErrorMessage As String

    Public Enum ResultEnum
        Successful = 1
        Unsuccessful = 2
    End Enum

    Public Sub New(_result As ResultEnum, _errorMessage As String)
        Result = _result
        ErrorMessage = _errorMessage
    End Sub
End Class
4

0 回答 0