我有一个WinForm应用程序,使用BackGroundWorker创建TCP客户端并将一些数据发送到远程服务器。当套接字完成关闭连接并从DoWork子程序退出后,在RunWorkerCompleted子程序中,我必须等待来自远程服务器的数据包,因此我始终运行一个填充Friend String类型变量并使用Boolean类型变量(标志)指示整个数据包已接收的TCP服务器。
因此,我必须等待该标志变为True,以处理必须在String类型变量中的数据;但我不想挂起GUI,因此我看到存在一种称为SpinWait的方法。
所以,这段代码可以工作吗?
如果5分钟后标志没有变为True,有没有办法退出循环?
另外一个问题是,多少次迭代表示500毫秒?
因此,我必须等待该标志变为True,以处理必须在String类型变量中的数据;但我不想挂起GUI,因此我看到存在一种称为SpinWait的方法。
所以,这段代码可以工作吗?
如果5分钟后标志没有变为True,有没有办法退出循环?
Private Sub BGW1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BGW1.RunWorkerCompleted
While Not AckReady
System.Threading.Thread.SpinWait(500)
End While
'Here process the received data from TCP server
TmrReport.Start()
End Sub
另外一个问题是,多少次迭代表示500毫秒?