从 BackGroundWorker DoWork WPF 更改标签文本 VB.NET
Change Label Text from BackGroundWorker DoWork WPF VB.NET
我的 backgroundWorker doWork
的事件有很多代码 execute.Is 可以在每个代码执行后更改标签文本吗?
例如:
Dim con As New SqlConnection("Data source=" & My.Settings.ip & "," & My.Settings.port & ";Network Library=DBMSSOCN;initial catalog=offpodb;User id=" & My.Settings.username & ";Password=" & My.Settings.password & ";")
con.Open()
If connected.Dispatcher.CheckAccess Then
connected.Content = "text"
Else
' i dunno what to use here as it is not the same as WinForms
End If
怎么办?
或
请帮助我将此 c# 代码转换为 WPF VB.NET
Label1.Invoke((MethodInvoker)delegate {
Label1.Text = i.ToString() + "Files Converted";});
您不应在 DoWork
方法中更新用户界面。
在每个任务完成后,在您的 DoWork
方法中调用 ReportProgress
。在 UserState
参数中设置要显示的消息。
然后在您的表单中处理 ProgressChanged
事件,从 e.UserState
中提取消息并使用它来更新您的标签。
将其视为后台工作人员通过调用 ReportProgress
发送消息,而您的主窗体通过处理 ProgressChanged
.
接收消息
我的 backgroundWorker doWork
的事件有很多代码 execute.Is 可以在每个代码执行后更改标签文本吗?
例如:
Dim con As New SqlConnection("Data source=" & My.Settings.ip & "," & My.Settings.port & ";Network Library=DBMSSOCN;initial catalog=offpodb;User id=" & My.Settings.username & ";Password=" & My.Settings.password & ";")
con.Open()
If connected.Dispatcher.CheckAccess Then
connected.Content = "text"
Else
' i dunno what to use here as it is not the same as WinForms
End If
怎么办?
或
请帮助我将此 c# 代码转换为 WPF VB.NET
Label1.Invoke((MethodInvoker)delegate {
Label1.Text = i.ToString() + "Files Converted";});
您不应在 DoWork
方法中更新用户界面。
在每个任务完成后,在您的 DoWork
方法中调用 ReportProgress
。在 UserState
参数中设置要显示的消息。
然后在您的表单中处理 ProgressChanged
事件,从 e.UserState
中提取消息并使用它来更新您的标签。
将其视为后台工作人员通过调用 ReportProgress
发送消息,而您的主窗体通过处理 ProgressChanged
.