Почему MessageBox.Show иногда терпит неудачу? - PullRequest
0 голосов
/ 28 февраля 2019

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