Как я могу закрыть «фиктивный» индикатор выполнения на 100% в Winforms?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу закрыть «фиктивный» индикатор выполнения на 100% в Winforms?

Сообщение Anonymous »

Я пишу небольшой проект Winforms, который выполняет определенную задачу, которая выполняется почти мгновенно. Поэтому я хочу добавить «фиктивный» индикатор выполнения во всплывающее диалоговое окно, чтобы улучшить взаимодействие с пользователем.

Полоска ничего не измеряет, она просто повторяет значение от 0 до заданного максимума. Когда индикатор выполнения достигнет максимального значения, диалоговое окно должно закрыться автоматически. Проблема, с которой я столкнулся, заключается в том, что диалоговое окно всегда закрывается, когда полоса достигает примерно 90 процентов.
После ответа пользователя «Скоро Луна» в этом сообщении SO я закодировал свой Диалоговое окно индикатора выполнения следующим образом:

Код: Выделить всё

public partial class ProgressBar : Form
{
public System.Windows.Forms.ProgressBar Progressbar { get { return this.progressBar1; } }

public ProgressBar()
{
InitializeComponent();
}

public void RunAsync(Action action)
{
Task.Run(action);
}
}
Затем в моей основной форме я показываю диалоговое окно индикатора выполнения, используя метод showProgressBar:

Код: Выделить всё

private void showProgressBar()
{
ProgressBar prog = new ProgressBar();

prog.Progressbar.Value = 0;
prog.Progressbar.Maximum = 200;

prog.RunAsync(() =>
{
for (int i = 0; i < prog.Progressbar.Maximum; i++)
{
Thread.Sleep(1);
prog.Progressbar.BeginInvoke((MethodInvoker)(() =>
{
prog.Progressbar.Value += 1;

//close the dialog when value equals maximum
if (prog.Progressbar.Value == prog.Progressbar.Maximum)
{
prog.Close();
prog.Dispose();
}
}));
}
});

prog.StartPosition = FormStartPosition.CenterParent;
prog.ShowDialog();
}
Это работает — диалоговое окно закрывается после завершения цикла, но оно закрывается до того, как индикатор выполнения визуально достигает 100%.
Что такое Я делаю неправильно?

Подробнее здесь: https://stackoverflow.com/questions/785 ... n-winforms
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»