Индикатор выполнения в приложении Winform. Увеличение индикатора выполнения до выполнения запроса к базе данных. - PullRequest
0 голосов
/ 08 июня 2011

Я подключаюсь к базе данных mysql онлайн из моего локального приложения C # .NET Winform. Я хочу, чтобы до тех пор, пока приложение не подключится к онлайн-базе данных, будет отображаться индикатор выполнения, и как только соединение с базой данных будет установлено, индикатор выполнения также должен завершить увеличение.

пожалуйста, помогите с кодом. Как получить время, необходимое приложению для подключения к онлайн-базе данных, а затем установить это время в качестве ИНТЕРВАЛА для индикатора выполнения?

Ответы [ 3 ]

2 голосов
/ 09 июня 2011

Почему бы вам не изменить стиль ProgressBar, чтобы пометить строку перед выполнением начала запроса, чем закончить, вы можете изменить стиль ProgressBar в блоках и дать Progressbar.Value = 100;.

1 голос
/ 08 июня 2011

Если я правильно прочитал, вы бы хотели, чтобы индикатор выполнения постоянно заполнялся до тех пор, пока не будет установлено соединение с базой данных (поскольку неизвестно, сколько времени может занять соединение до его завершения)

Если это так, вы можете использовать таймер / фоновый работник, чтобы сделать это довольно легко. Код Судо:

Timer a= new Timer();
a.Tick += TickMethod;
a.interval = 2;

BackgroundWorker b = new BackgroundWorker();
b.DoWork += BackgroundMethod();
b.WorkComplete += WorkDone();

void Start()
{
  a.Start();
  b.RunAsync();
}

void TickMethod()
{
   if(progressBar.Value == progressBar.Max)
      progressBar.Value = 0;
   progresssBar.Step();
}

void BackgroundMethod(object s, Args e)
{
   MakeConnection();
}

void WorkDone()
{
  a.Stop();
  progressBar.Value = progressBar.Max();
}

Извините, если это не то, что вы ищете.

0 голосов
/ 09 июня 2011
  • «Правильный» способ использовать индикатор выполнения для операции, которая займет неопределенное время, - установить его в режим Marquee.Это показывает полосу с анимированным эффектом «блеска», чтобы показать, что что-то происходит, но не показывает фактическую шкалу прогресса (так как вы не знаете, сколько времени это займет, вы не можете оценить процент выполнения).После подключения вы можете установить для Value индикатора выполнения значение Max, чтобы оно переместилось на 100%.

  • В некоторых версиях IE использовался альтернативный подход, в то время какзагрузка веб-страниц.Это показало индикатор выполнения, который медленно увеличивался до 100% в течение длительного периода (заранее определенного периода времени, достаточного для охвата сценария наихудшего случая - например, в вашем случае вы можете выбрать 30 секунд, поскольку это часто период ожидания, используемый для сбоя соединениятем не мение).Когда соединение наконец установлено, вы повышаете планку до 100%.Это создает впечатление прогресса, достигнутого в то время, как вы ожидаете, и если ваша оценка сценария наихудшего случая является разумной, это даст хорошие результаты.

Однако, обратите внимание , что индикаторы выполнения .net не сразу переходят к новому значению - они анимируются так, чтобы «расти» в направлении запрошенного значения, поэтому, если оно должно перейти от 0% до 100%, потребуется секундаили два, прежде чем он на самом деле отображает 100%.Это может означать, что (например) ваше окно закрывается, в то время как индикатор выполнения показывает только значение, подобное 20%, что очень раздражает, так как заставляет пользователя думать, что оно каким-то образом не удалось.Для этого есть два решения:

1) Заставьте ваше приложение приостановить работу (например, «Спите») на «достаточно длительный период», чтобы вы были уверены, что индикатор выполнения достигнет 100%.Это добавляет дополнительную задержку в несколько секунд к концу вашей операции, и необходимое время может быть довольно непредсказуемым, поэтому это не очень хорошее решение, особенно если выборка из базы данных часто быстрая.

2) Принудительноиндикатор выполнения «прыгает» на 100%, а не медленно растет к 100%.Вы можете сделать это, установив Value = Max; Value = Max-1; Value = Max.Когда индикатор выполнения запрашивается «назад» таким образом (до Max-1), он не анимируется, а немедленно обновляется, показывая требуемое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...