Форма Windows зависает на индикаторе выполнения? - PullRequest
0 голосов
/ 21 мая 2018

Хорошо, я построил свое приложение для форм, и в нем есть цикл, заставляющий индикатор выполнения подниматься, но проблема здесь в том, что когда оно поднимается, окно не перемещается или не отвечает, я все еще могуувидеть изменение индикатора выполнения, я не могу закрыть его или что-то еще, пока оно не закончено.Это несколько раздражает, потому что я не хочу, чтобы он зависал во время тестирования или имел нерабочее приложение до тех пор, пока не закончится индикатор выполнения.Вот мой код:

private void Form1_Load(object sender, EventArgs e)
    {
        progressBar2.Minimum = 1;
        progressBar2.Maximum = nummax;
    }

private void timer2_Tick(object sender, EventArgs e)
{
    for (int i = 1; i <= nummax; i++)
    {
        if (i != nummax && !enabled)
        {
            int percent;
            percent = i / nummax;
            string ab = percent.ToString();
            progress.Text = ab;
            Thread.Sleep(50);
            progressBar2.Value = i;
        }
    }
    if (progressBar2.Value == nummax || enabled || progressBar2.Value >= nummax - 30)
    {
        progress.Text = "Completed!";
        progressBar2.Minimum = 1;
        progressBar2.Maximum = 2;
        enabled = true;
    }
}

1 Ответ

0 голосов
/ 21 мая 2018

Удалите это Thread.Sleep(50)

Добавьте progressBar2.Refresh()

или не удалось использовать

progressBar2.PerformStep()

Система занята обработкой, у нее нет времени на сбросСообщения Windows для элементов управления.

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