Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> backgroundworker 
:(
    Опции темы
Neymexa
Дата 7.5.2009, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.12.2008

Репутация: нет
Всего: нет



вот изучаю на простом примере 
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Xml.XPath;
using System.Xml;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            for (int i = 0; i < 1000; i++) 
            {
                backgroundWorker1.ReportProgress(i);
                if (backgroundWorker1.CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            backgroundWorker1.RunWorkerAsync();
        }

        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            backgroundWorker1.CancelAsync();
        }

        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Cancelled)
                MessageBox.Show("Действие было отменено пользователем");
            else
                MessageBox.Show("Работа завершена");
        }

    }
}

выдает ошибку 
Этот компонент BackgroundWorker не сообщает о ходе выполнения. Измените свойство WorkerReportsProgress так, сведения о ходе выполнения выдавались.

ругается на backgroundWorker1.ReportProgress(i);
PM MAIL   Вверх
QryStaL
Дата 7.5.2009, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



Цитата(Neymexa @  7.5.2009,  10:25 Найти цитируемый пост)
выдает ошибку Этот компонент BackgroundWorker не сообщает о ходе выполнения. Измените свойство WorkerReportsProgress

В описании ошибки есть вся нужная информация. В чем сложность изменить свойство WorkerReportsProgress ?


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
Neymexa
Дата 7.5.2009, 10:50 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.12.2008

Репутация: нет
Всего: нет



также ругается на такой пример если добавить в цикл вывод цифр
 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            for (int i = 0; i < 1000; i++) 
            {
                listBox1.Items.Add(i);//////////Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'listBox1' не из того потока, в котором он был создан.
                backgroundWorker1.ReportProgress(i);
                if (backgroundWorker1.CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }
            }
        }
ругается

Добавлено через 2 минуты и 46 секунд
Цитата(QryStaL @ 7.5.2009,  10:33)
Цитата(Neymexa @  7.5.2009,  10:25 Найти цитируемый пост)
выдает ошибку Этот компонент BackgroundWorker не сообщает о ходе выполнения. Измените свойство WorkerReportsProgress

В описании ошибки есть вся нужная информация. В чем сложность изменить свойство WorkerReportsProgress ?

я не понимаю что не так?
зачем менять - аналогичный пример писал ничего не ругался
PM MAIL   Вверх
Bogdan1024
Дата 7.5.2009, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 5
Всего: 13



WorkerReportsProgress = true;


--------------------
user posted image
PM MAIL   Вверх
Neymexa
Дата 7.5.2009, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.12.2008

Репутация: нет
Всего: нет



Цитата(Bogdan1024 @ 7.5.2009,  10:57)
WorkerReportsProgress = true;

блин сам не догадался спасибо
PM MAIL   Вверх
QryStaL
Дата 7.5.2009, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



Цитата(Neymexa @  7.5.2009,  10:50 Найти цитируемый пост)
я не понимаю что не так?зачем менять

Вы просто бездумно скопировали какой-то пример и не удосужились заглянуть в MSDN, чтобы прочитать описание свойства

Set the WorkerReportsProgress property to true if you want the BackgroundWorker to support progress updates. When this property is true, user code can call the ReportProgress method to raise the ProgressChanged event.

Приложите хоть какие-то усилия, чтобы найти ответ самостоятельно.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
apsy
Дата 8.5.2009, 04:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 7.6.2008

Репутация: нет
Всего: нет



А у меня возникла другая проблема с этим примером. В точности такой же код, во время работы backgroundWorkerа все контролы на форме недоступны(кнопки не нажимаются), как будто воркер выполняется в потоке формы... Что-то не так?
PM MAIL   Вверх
QryStaL
Дата 8.5.2009, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



Цитата(apsy @  8.5.2009,  04:46 Найти цитируемый пост)
А у меня возникла другая проблема с этим примером. В точности такой же код, во время работы backgroundWorkerа все контролы на форме недоступны(кнопки не нажимаются), как будто воркер выполняется в потоке формы...

Код полностью идентичный? Если нет, то показывайте, глянем )


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.