Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#opennetCF后台工作程序在100次迭代后停止_C#_Backgroundworker_Opennetcf - Fatal编程技术网

c#opennetCF后台工作程序在100次迭代后停止

c#opennetCF后台工作程序在100次迭代后停止,c#,backgroundworker,opennetcf,C#,Backgroundworker,Opennetcf,我有一个在100次迭代后停止的后台工作程序。像这样: BackgroundWorker bgWorker = new BackgroundWorker(); bgWorker.WorkerReportsProgress = true; bgWorker.WorkerSupportsCancellation = true; bgWorker.DoWork += new OpenNETCF.ComponentModel.DoWorkEventHandler(this

我有一个在100次迭代后停止的后台工作程序。像这样:

    BackgroundWorker bgWorker = new BackgroundWorker();
    bgWorker.WorkerReportsProgress = true;
    bgWorker.WorkerSupportsCancellation = true;

    bgWorker.DoWork += new OpenNETCF.ComponentModel.DoWorkEventHandler(this.bgWorker_DoWork);
    bgWorker.RunWorkerCompleted += new OpenNETCF.ComponentModel.RunWorkerCompletedEventHandler(this.bgWorker_RunWorkerCompleted);
    bgWorker.ProgressChanged += new OpenNETCF.ComponentModel.ProgressChangedEventHandler(this.bgWorker_ProgressChanged);


    private void bgWorker_DoWork(object sender, DoWorkEventArgs e)
    {
            for(i=0; i<300; i++)
            {   
                bgWorker.ReportProgress(i, i);
            }

    }


    private void bgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        this.labelProgress.Text = e.UserState.ToString(); 
    }

    private void bgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        MessageBox.Show("finished loading...");
    }
BackgroundWorker bgWorker=新的BackgroundWorker();
bgWorker.WorkerReportsProgress=true;
bgWorker.WorkerSupportsScanCellation=true;
bgWorker.DoWork+=新的OpenNETCF.ComponentModel.doworkenventhandler(this.bgWorker\u DoWork);
bgWorker.RunWorkerCompleted+=新的OpenNETCF.ComponentModel.RunWorkerCompletedEventHandler(this.bgWorker\u RunWorkerCompleted);
bgWorker.ProgressChanged+=新的OpenNETCF.ComponentModel.ProgressChangedEventHandler(this.bgWorker\u ProgressChanged);
私有void bgWorker\u DoWork(对象发送方,DoWorkEventArgs e)
{

对于(i=0;i我已经尝试过(使用.NET4)它工作正常-当MessageBox出现时标签显示299。但是我没有使用
OpenNETCF
类-也许它们有一些效果?如果用
System.ComponentModel
替换
OpenNETCF.ComponentModel
你会得到同样的行为吗?

我已经尝试过了(使用.Net 4)它工作正常-当MessageBox出现时标签显示299。但是我没有使用
OpenNETCF
类-也许它们有一些效果?如果用
System.ComponentModel
替换
OpenNETCF.ComponentModel
,你会得到同样的行为吗?

你的代码正在破坏BGW线程。确保如果RunWorkerCompleted事件处理程序中的e.Error值不为null,则将其显示出来

从Backgroundworker.ReportProgress的MSDN库文章:

百分比进度
类型: System.Int32

从0到100的百分比 已完成的后台操作

修正:


您的代码正在使BGW线程崩溃。如果不为null,请确保在RunWorkerCompleted事件处理程序中显示e.Error的值

从Backgroundworker.ReportProgress的MSDN库文章:

百分比进度
类型: System.Int32

从0到100的百分比 已完成的后台操作

修正:


我使用的是.net Compact Framework,不包括后台工作程序。我使用的是.net Compact Framework,不包括后台工作程序。非常感谢!你救了我一天:)非常感谢!你救了我一天:)
 bgWorker.ReportProgress(0, i);