У меня есть некоторый код на 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