C # проблема с BackgroundWorker - PullRequest
4 голосов
/ 24 мая 2011

У меня проблема с компонентом "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' не может бытьнайдено (вам не хватает директивы using или ссылки на сборку?)

У кого-нибудь есть идея?

Ответы [ 2 ]

9 голосов
/ 24 мая 2011

Попробуйте добавить:

using System.ComponentModel;
2 голосов
/ 24 мая 2011

Имя класса - BackgroundWorker, а не BackGroundWorker - вот почему.

...