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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> progressbar, progressbar 
:(
    Опции темы
DEADLY
Дата 6.4.2010, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



есть запрос который долго выполняется, как поверх формы  повесить бесконечный progressbar пока не выполнится запрос!
и может ли progressbar оценить время выполнения запроса  smile 
PM MAIL   Вверх
Skalik
Дата 6.4.2010, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 20.3.2008
Где: Харьков

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



Это можно реализовать с помощью потоков! Почитай о них! В одном потоке будет твой запрос, а во втором прогрессбар!
 
А по поводу прогрессбара то сам он ничего измерять не сможет!! Он просто отображает значение которое ты ему передаешь!!
PM MAIL ICQ   Вверх
Dobermann
Дата 6.4.2010, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Предположим мы имеем класс:
Код

    public delegate void ProgressHandler (int progress);

    public class FileProcessor
    {
        public event ProgressHandler Progress;

        public void DoWork()
        {
            for (int i = 1; i <= 100; ++i)
            {
                Thread.Sleep(100);
                if (Progress != null)
                    Progress(i);
            }
        }
    }

Метод DoWork будет вызываться в какомнибудь потоке. Данный код имитирует работу, но он показывает как ты можешь генерировать событие и сообщать вызывающему коду какой прогресс выполнен.
В моем примере генерируется событие где прогресс инкрементируется на единицу.

А вот код формы:
Код

        private void btnStart_Click(object sender, EventArgs e)
        {
            var processor = new FileProcessor();
            processor.Progress += ProcessorProgress;

            var thread = new Thread(processor.DoWork);
            thread.Start();
        }

        void ProcessorProgress(int progress)
        {
            if(progressBar1.InvokeRequired)
            {
                progressBar1.Invoke(new ProgressHandler(ProcessorProgress), progress);
            }
            else
            {
                progressBar1.Value = progress;                
            }
        }

Тут ты по обработчику Start запускаешь метод в отдельном потоке и подписываешься на уведомление о выполненном прогрессе, сам обработчик синхронизирует доступ к GUI из другого потока и обновляет прогрессбар полученным из метода значением. 
PM   Вверх
mrbrooks
Дата 7.4.2010, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



Цитата(DEADLY @  6.4.2010,  15:32 Найти цитируемый пост)
как поверх формы  повесить бесконечный progressbar пока не выполнится запрос!

лучше анимацию.
Цитата(DEADLY @  6.4.2010,  15:32 Найти цитируемый пост)
может ли progressbar оценить время выполнения запроса

в данном случае - сомневаюсь

Рекомендую для такого рода задач BackgroundWorker.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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