C#中使用BackgroundWorker遇到的问题

5

我有一个与“BackgroundWorker”组件相关的问题

当我点击按钮时,需要执行n次迭代,这需要时间,因此必须将此操作委托给另一个线程

我遵循了这个教程:教程(法语)

下面是我的代码:

    private void btnIterate_Click(object sender, EventArgs e)
    {
        bgwIterer.RunWorkerAsync();                
    }

    private void bgwIterer_DoWork(object sender, DoWorkEventArgs e)
    {
        BackgroundWorker worker = sender as BackgroundWorker;
        e.Result = new Iterate(btnIterate, btnReinit, txtInput, lblState, entree, worker, e);
    }

    private void bgwIterer_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        this.lblState.Text = e.ProgressPercentage;
    }

bgwIterer是我的BackgroundWorker组件,这里是我想委托的方法:

class Iterate
{
    // Constructeur surchargé de la classe Iterate:
    public Iterate(Button mybtnIterate, Button mybtnReinit,
    TextBox mytxtInput, Label mylblState,
    int myentree, BackgroundWorker worker,
    DoWorkEventArgs e)
    {
        int pourcent = 0;
        int var0 = 0, var1;
        mybtnIterate.Enabled = false;
        mytxtInput.Focus();
        do
        {
            var1 = 0;
            do
            {
                ++var1;
            }
            while (var1 < myentree);
            ++var0;
            pourcent = (var0 / myentree) * 100;
            worker.ReportProgress(pourcent);
        }
        while (var0 < myentree);
        mylblState.Text = "Terminé !";
        mytxtInput.Enabled = false;
    }

}

这是问题:

类型或命名空间名称“BackGroundWorker”无法找到(是否缺少使用指令或程序集引用?)

有人有想法吗?


你的命名空间声明是什么样子的?你使用的是哪个版本的.NET?特别地,你是否引用了System.ComponentModel.Component?http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx - Terrance
你是否添加了System.ComponentModel的using引用? - klennepette
2个回答

10
尝试添加:
using System.ComponentModel;

2

类名是BackgroundWorker,而不是BackGroundWorker - 这就是原因。


很奇怪,我使用了BackgroundWorker:/ - Michaël
1
我刚刚看了你发布的错误 - 它有大写字母"G"。但无论如何,看起来这不是真正的问题 - 你只需要添加一个 "using" 语句 :) - Andrey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接