16,554
社区成员
发帖
与我相关
我的任务
分享
Public Sub UpdateUI()
Dim mrs As New Thread(AddressOf MonitorRASStatusAsync)
mrs.Abort()
Dim newDelegate As New UIDelegate(AddressOf UpdateUI)
If Me.InvokeRequired Then
Me.Invoke(newDelegate)
Else
Label2.Visible = True
state.Text = "连接已断开"
username.Visible = True
userpass.Visible = True
connect.Enabled = True
remember.Visible = True
End If
If autoredial.Checked = True Then
If Me.InvokeRequired Then
Me.Invoke(newDelegate)
Else
Label2.Visible = False
state.Text = "正在连接中"
username.Visible = False
userpass.Visible = False
connect.Enabled = False
remember.Visible = False
End If
Call dial()
End If
End Sub
Dim newDelegate As New UIDelegate(AddressOf UpdateUI)
If Me.InvokeRequired Then
Me.Invoke(newDelegate)
Else
Label2.Visible = True
state.Text = "连接已断开"
username.Visible = True
userpass.Visible = True
connect.Enabled = True
remember.Visible = True
If autoredial.Checked = True Then
Label2.Visible = False
state.Text = "正在连接中"
username.Visible = False
userpass.Visible = False
connect.Enabled = False
remember.Visible = False
Call dial()
End If
End If
Public Sub UpdateUI()
Dim mrs As New Thread(AddressOf MonitorRASStatusAsync)' 定义线程,但没启动
mrs.Abort()'停止了
Dim newDelegate As New UIDelegate(AddressOf UpdateUI)'声明委托
If Me.InvokeRequired Then'如果跨线程调用
'通过委托,调用UpdateUI,相当于递归调用自己了,调用完成后继续执行
Me.Invoke(newDelegate)
Else
Label2.Visible = True
state.Text = "连接已断开"
username.Visible = True
userpass.Visible = True
connect.Enabled = True
remember.Visible = True
End If
'如果跨线程调用,则执行完invoke后也会执行到这里,但下面直接访问了ui
If autoredial.Checked = True Then
If Me.InvokeRequired Then'如果跨线程访问ui
Me.Invoke(newDelegate)'再次递归调用自己
Else
Label2.Visible = False
state.Text = "正在连接中"
username.Visible = False
userpass.Visible = False
connect.Enabled = False
remember.Visible = False
End If
Call dial()
End If
End Sub