Un esempio di come puoi superare il blocco dell'UI.

codice:
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Dim task As New System.Threading.Thread(AddressOf SerialPortOpen)
            task.Start()
            Dim count As Long = System.Environment.TickCount
            Dim temp As Long
            Do While task.IsAlive
                temp = System.Environment.TickCount - count
                If temp > 2000 Then
                    MessageBox.Show("Timeout Porta")
                    Exit Sub
                End If
            Loop
            MessageBox.Show("Porta valida")
            'Connessione alla periferica
        Catch ex As Exception
        End Try
    End Sub

    Sub SerialPortOpen()
        Try
            SerialPort1.Open()
        Catch ex As Exception
        End Try
    End Sub
Ovviamente se hai più porte seriali fisiche non puoi sapere quale sia quella realmente collegata alla periferica.