C#在不同名称空间/类WPF中回退工作程序

C#在不同名称空间/类WPF中回退工作程序,c#,backgroundworker,C#,Backgroundworker,编辑:通过添加缺少的进度更改事件处理程序解决。 我正在将一个WPF VB.net应用程序移植到C#上,并且与另一个类中具有DoWork方法的后台工作程序有问题。我怀疑我没有正确地设置后台工作人员,或者我可能需要一名处理人员 vb示例代码工作正常,进度条指示正确,C#代码似乎触发了bw.RunWorkerAsync();方法,因为它报告为IsBusy=True,但没有其他响应、进度或对外部类的调用(据我所知) 这是一个WPF应用程序,问题在于Usercontrol试图从控件外的公共类报告进度 如果

编辑:通过添加缺少的进度更改事件处理程序解决。

我正在将一个WPF VB.net应用程序移植到C#上,并且与另一个类中具有DoWork方法的后台工作程序有问题。我怀疑我没有正确地设置后台工作人员,或者我可能需要一名处理人员

vb示例代码工作正常,进度条指示正确,C#代码似乎触发了bw.RunWorkerAsync();方法,因为它报告为IsBusy=True,但没有其他响应、进度或对外部类的调用(据我所知)

这是一个WPF应用程序,问题在于Usercontrol试图从控件外的公共类报告进度

如果有人能给我指出正确的方向,我会非常感激

C#示例代码

 namespace testApp.Usercontrols
    public partial class ucHome : UserControl
    {
        public Sharing.clsDownloadCollection foo = new Sharing.clsDownloadCollection(); 
         BackgroundWorker bw = new BackgroundWorker();



     public ucHome()         
{       InitializeComponent();
 }

private void Button1_Click(object sender, RoutedEventArgs e)
    {


        bw.WorkerReportsProgress = true;
        pBar.Maximum = 50000;   //progress bar on ucHome
        pBar.Value = 0;

        **// Indicates IsBusy=True when debugging but can't see any further activity
         bw.RunWorkerAsync();
        //**

    }

 public void bw_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
          var foo=new foo();

         // possible problem?
           foo.DoWork((BackgroundWorker)sender);

        }

        public void bw_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
        {

            this.pBar.Value = e.ProgressPercentage;
        }
外部类包含不同的项目文件夹/命名空间

 namespace testApp.Sharing
{
//different namespace /folder than ucHome
 public class foo 

{
public void DoWork(BackgroundWorker bw)
{
    for (int i = 0; i <= 50000; i++) {
        i += 1;

        bw.ReportProgress(i - 1);
}
}

}
用户控件调用的类foo

Public Class foo

  Public Sub DoWork(ByVal bw As BackgroundWorker)
        For i As Integer = 0 To 50000
            i += 1
         bw.ReportProgress(i - 1)
        Next
    End Sub
End Class

通过添加缺少的backgrounder ProgressChanged事件处理程序来解决此问题。

代码未按提供的方式编译。例如,“myfoo”的定义在哪里?您是否混淆了本地“foo”和导致您出现问题的“myfoo”字段?还有,为什么要将发送者强制转换两次(为什么要将其存储在一个变量中而从不使用它。请尝试清理代码,这样其他人就不必像那样费力地处理这些麻烦了。为我的输入错误道歉(myfoo不打算出现在帖子中)。我已经解决了这个问题,因为缺少了一个事件处理程序来更改进度。
Public Class foo

  Public Sub DoWork(ByVal bw As BackgroundWorker)
        For i As Integer = 0 To 50000
            i += 1
         bw.ReportProgress(i - 1)
        Next
    End Sub
End Class