Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: ProgressBar Добавлено: 16.07.09 11:04  

Автор вопроса:  Nikos
Мое приложение написанное на C# работает с базами данных, обращается к базе данных и делает какие либо запросы, на выполнение данных запросов уходит определенное время, Как заставить ProgressBar двигаться синхронно с выполнением запроса?

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 Чочооо



Вопросов: 0
Ответов: 3
 Профиль | | #1 Добавлено: 16.07.09 11:40
А чо она делает? Дай фрагмент кода.

Ответить

Номер ответа: 2
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #2
Добавлено: 16.07.09 13:53
  1. {
  2. //место перед тем как запускать запросы
  3. _deleg = new deleg(SetValue);
  4. Thread thr = new Thread(new ParameterizedThreadStart(StartProc)); //запускаем процедуру StartProc в новом потоке
  5. thr.Start(something); //передаем какой нить параметр в процедуру, если нада без параметра чуток поменять нада
  6. }
  7.  
  8. private void StartProc(object something)
  9.         {
  10. //делаем первый запрос
  11. //...
  12. progressBar.Invoke(_deleg, new object[] { new_value }); //new_value - новое значение прогрессбара
  13. //делаем второй... и т.д. по аналогии
  14. }
  15.  
  16. private void SetValue(object value)
  17.         {
  18.             progressBar.Value = (int)(value);
  19.         }
  20.  
  21. private delegate void deleg(object value);
  22.         private deleg _deleg;

Ответить

Номер ответа: 3
Автор ответа:
 Nikos



Вопросов: 29
Ответов: 32
 Профиль | | #3 Добавлено: 16.07.09 16:28
При нажатии кнопки выполняется следующая процедура, хотелось что б на форме где находится кнопка также находился ProgressBar и отображал процесс выполнения процедуры
  1. private void btnSverka_newYear_Click(object sender, EventArgs e)
  2.         {
  3.             Configurator cnfg = new Configurator();
  4.             DbManager.AddConnectionString("LocalSRV", cnfg.CreateString());
  5.             using (DbManager db = new DbManager("LocalSRV"))
  6.                 try
  7.                 {
  8.                     db.SetSpCommand("err_CHECK_People_Rec_newYear").ExecuteNonQuery();
  9.  
  10.                 }
  11.                 catch (Exception ex)
  12.                 {
  13.                     MessageBox.Show(ex.ToString());
  14.                 }
  15.                 finally
  16.                 {
  17.                 }
  18.             MessageBox.Show("Сверка рецептов завершена!");
  19.         }

Ответить

Номер ответа: 4
Автор ответа:
 Nikos



Вопросов: 29
Ответов: 32
 Профиль | | #4 Добавлено: 16.07.09 16:34
Skywalker, а какие праметры у progressBar устанавливать, например максимальное значение? И если без параметра то что поменять надо(это вопрос к цитате)?

Ответить

Номер ответа: 5
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #5
Добавлено: 16.07.09 16:41
какое хочешь, такое и устанавливай, зависит от тебя. можешь поставить 100, а потом при передаче текущего значения прогрессбару считать как 100/кол-во запросов * номер текущего запроса. или можешь поставить макс значение = кол-ву запросов, и потом в прогрессбаре просто добавлять по единице каждый раз.

если без параметра, то менять нужно на:
  1.  
  2. Thread thr = new Thread(new ThreadStart(StartProc));
  3.                 thr.Start();


ну и у процедуры StartProc стереть object something

Ответить

Номер ответа: 6
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #6
Добавлено: 16.07.09 16:44
если кстати тебе нужно подождать, пока поток не завершит работу, то нужно после
thr.Start();
дописать thr.Join();
иначе у тя код дальше пойдет выполняться

Ответить

Номер ответа: 7
Автор ответа:
 Nikos



Вопросов: 29
Ответов: 32
 Профиль | | #7 Добавлено: 16.07.09 16:51
Skywalker спасибо, попробую разобраться))), если что еще обращусь

Ответить

Номер ответа: 8
Автор ответа:
 Nikos



Вопросов: 29
Ответов: 32
 Профиль | | #8 Добавлено: 17.07.09 10:46
Skywalker, а что такое deleg, класс или структура и как выглядит

Ответить

Номер ответа: 9
Автор ответа:
 Nikos



Вопросов: 29
Ответов: 32
 Профиль | | #9 Добавлено: 17.07.09 11:07
Skywalker, ты меня не правильно понял, запросов не много, он может быть всего один, но из-за того что таблицы очень большие запрос выполняется долго и надо чтоб ProgrssBar отслеживал выполнение данного запроса.

Ответить

Номер ответа: 10
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #10
Добавлено: 17.07.09 13:20
а тогда никак

Ответить

Номер ответа: 11
Автор ответа:
 Nikos



Вопросов: 29
Ответов: 32
 Профиль | | #11 Добавлено: 17.07.09 14:18
Жаль!!!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам