在线程内创建表单实例

时间:2011-10-25 12:07:35

标签: vb.net multithreading

我正在尝试创建一个新的表单实例,如果它尚未创建,唯一的问题是实例创建是在一个线程内。

    Private Sub doRead(ByVal ar As System.IAsyncResult)
    Dim totalRead As Integer
    Try
        totalRead = client.GetStream.EndRead(ar) 'Ends the reading and returns the number of bytes read.
    Catch ex As Exception
        'The underlying socket have probably been closed OR an error has occured whilst trying to access it, either way, this is where you should remove close all eventuall connections
        'to this client and remove it from the list of connected clients.
    End Try

    If totalRead > 0 Then
        'the readBuffer array will contain everything read from the client.
        Dim receivedString As String = System.Text.Encoding.UTF8.GetString(readBuffer, 0, totalRead)
        messageReceived(receivedString)
    End If
    Try
        client.GetStream.BeginRead(readBuffer, 0, BYTES_TO_READ, AddressOf doRead, Nothing) 'Begin the reading again.
    Catch ex As Exception
        'The underlying socket have probably been closed OR an error has occured whilst trying to access it, either way, this is where you should remove close all eventuall connections
        'to this client and remove it from the list of connected clients.
        MessageBox.Show(ex.ToString)
    End Try
End Sub

问题在于在行上创建表单.showDialog()它在此处停止,直到应用程序关闭。香港专业教育学院尝试使用.show()然后新的“Convo窗口挂起”

 Private Sub messageReceived(ByVal message As String)
    Dim data() As String = message.Split("|"c)
    Select Case data(0)
        Case "MESSAGE"

            Dim chatDialog As New RichTextBox
            Try
                If conversations.ContainsKey(data(1)) Then
                    Dim convoWindow As ChatWindow
                    convoWindow = New ChatWindow
                    convoWindow = conversations.Item(data(1))
                    chatDialog = convoWindow.RichTextBox1
                Else
                    Try
                        Dim convoWindow As New ChatWindow()

                        conversations.Add(data(1), convoWindow)
                        convoWindow = conversations.Item(data(1))
                        convoWindow.ShowDialog()
                        chatDialog = convoWindow.RichTextBox1
                        AppendTextChatWindows(data(2), chatDialog)

由于 Houlahan

0 个答案:

没有答案