VB.net 表单无响应

VB.net Form Not Responding

我正在创建一个可以等待计算机连接到我的服务器的程序 此代码最初是在控制台中实现的,但我希望以 GUI 形式实现

MsgBox("Server is ready!", MsgBoxStyle.Information, "ChatApp! | Alert")
    server = New TcpListener(ipendpoint)
    server.Start()

    While True
        client = server.AcceptTcpClient

        Dim c As New Connection
        c.stream = client.GetStream
        c.streamr = New StreamReader(c.stream)
        c.streamw = New StreamWriter(c.stream)

        c.hostname = c.streamr.ReadLine

        list.Add(c)
        FlatListBox1.AddItem(c.hostname)
        ListView1.Items.Add(c.hostname & " is connected")

        Dim t As New Threading.Thread(AddressOf ListenToConnection)
        t.Start(c)
    End While

    Me.Show()

将此添加到 Form_load 之后,但我的表单不可点击,否则 当我的表格是 运行

时,请帮助我在后台运行此代码

编辑

我在 google 的某处找到了答案。

' Background work
Task.Factory.StartNew(Function() 

' Update UI thread

End Function).ContinueWith(Function(t) 

End Function, TaskScheduler.FromCurrentSynchronizationContext())

但我不知道如何将它合并到我的代码中

添加此

后出现错误
If Me.InvokeRequired Then
Me.BeginInvoke(Sub() TextBox1.Text = "Done")
End If

您的表单不可点击,因为您正在锁定 UI 线程。

你有一个永远不会退出的 While..End While 循环。

您需要将其更改为在某个时候退出(UI 将在 运行 循环时被锁定),或者将代码移出 UI 线程,如果它需要 运行 不止一次。

有多种选择

  • 后台工作者
  • 一个计时器
  • 一个线程,
  • 或(T 的)任务

我建议查看 Tasks and Continuations,因为您将获取读取流并与 UI 线程交互的结果(即将文本放入列表框。)