从 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.

接收消息