Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2017, 19:08   #1
sergei92
Пользователь
 
Регистрация: 17.07.2015
Сообщений: 51
По умолчанию Как привязать выполнение метода к ProgressBar

Здравствуйте!

Возник такой вопрос. Существует два класса в одном распаковывается архив а в другом парсится XML. Из-за большого объема данных программа долго выполняется. Хотелось бы прикрепить ProgressBar к каждому действию.

Начал смотреть в сторону BackgroundWorker, но не могу понять как в методе

private void bw_Work(object sender, DoWorkEventArgs e)
{
System.Threading.Thread.Sleep(100);

}

добавить выполнение метода в ProgressBar. Может есть какие-нибудь предложении по этому поводу. А то уже в тупике.
sergei92 вне форума Ответить с цитированием
Старый 29.06.2017, 20:21   #2
ZnZ
Пользователь
 
Регистрация: 14.06.2017
Сообщений: 45
По умолчанию

Ты можешь сделать что бы твои классы выполняли работу в потоке, и по мере выполнения записывать в ProgressBar.Value сколько ты уже прошёл, и выполнять update(), он обрабатывает сообщения для окна, и ты будешь видеть как идёт прогресс
Код:
private void update(){
Application.Current.Dispatcher.Invoke(
                    DispatcherPriority.Background,
                    new ThreadStart(delegate { }));
}
ZnZ вне форума Ответить с цитированием
Старый 01.07.2017, 00:15   #3
vaDS
Пользователь
 
Регистрация: 16.04.2017
Сообщений: 94
По умолчанию

Цитата:
Сообщение от sergei92 Посмотреть сообщение
Начал смотреть в сторону BackgroundWorker, но не могу понять как в методе
Не нужно в ту сторону смотреть(тестил когда-то, BackgroundWorker'ы создаются с периодом 0.5 сек-1 сек).

Нужно посмотреть в сторону Thread( но не в коем случае Thread.Sleep(100) -сам говоришь проге тупить
Не, не слушай.

Многопоточность сделай, там потоков 3-5 оптимально.(а потом делегатами буш выводить на контролы).

Тип того, но, литературы нужно много будет почитАть.
vaDS вне форума Ответить с цитированием
Старый 01.07.2017, 00:15   #4
vaDS
Пользователь
 
Регистрация: 16.04.2017
Сообщений: 94
По умолчанию

Цитата:
Сообщение от sergei92 Посмотреть сообщение
Начал смотреть в сторону BackgroundWorker, но не могу понять как в методе
Не нужно в ту сторону смотреть(тестил когда-то, BackgroundWorker'ы создаются с периодом 0.5 сек-1 сек).

Нужно посмотреть в сторону Thread( но не в коем случае Thread.Sleep(100) -сам говоришь проге тупить
Не, не слушай.

Многопоточность сделай, там потоков 3-5 оптимально.(а потом делегатами буш выводить на контролы).

Тип того, но, литературы нужно много будет почитАть.
vaDS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача файла. Привязать ProgressBar Shouldercannon Работа с сетью в Delphi 0 09.06.2012 20:19
ProgressBar как Slider или Slider как ProgressBar coNsept Общие вопросы .NET 5 08.03.2012 17:00
Привязать к кнопке КАК? ProGec4 Visual C++ 1 25.12.2011 19:11
Привязать ProgressBar к динамически созданному IdHTTP Shouldercannon Общие вопросы Delphi 5 04.12.2011 17:38
как привязать время? Alexi Компоненты Delphi 2 12.04.2009 22:32