Задать вопрос
littleguga
@littleguga
Не стыдно не знать, а стыдно не интересоваться.

Как реализовать «бегающие» точки?

Хочется сделать свое отображение ожидания процесса.
Должно выглядеть так: 1) .
2) ..
3) ...
4) .
И так в цикле.
Вопрос, как реализовать это на c#?
В голову пришло такое, но при запуске форма зависает и не реагирует:
int i = 0;
int k = 0;
while (i < 1000)
{
	if (k == 0)
	{
		label1.Text = ".";
		k = 1;
	}
	else if (k == 1)
	{
		label1.Text = "..";
		k = 2;
	}
	else
	{
		label1.Text = "..";
		k = 0;
	}
		Thread.Sleep(100);
		i++;
}


ps.
В самой задаче уже отказался от этой затеи в пользу ProgressBar'a с Style=Marquee. Но вопрос теперь носит чисто академический интерес.

pps.
Уверен, что где-то в мире это уже реализовано. Но честно говоря я даже не знаю, как сформулировать вопрос "по-человечески", поэтому и погуглить не смог.
  • Вопрос задан
  • 2634 просмотра
Подписаться Оценить Комментировать
Решение пользователя SHVV К ответам на вопрос (3)
SHVV
@SHVV
Если у вас этот код вызывается в потоке пользовательского интерфейса, то ничего удивительного в этом нет. Вы блокируете обработку очереди сообщений и не даёте контролам даже перерисовать себя.

В "хороших" приложениях блокировать UI не стоит, нужно переносить код в параллельный поток, а оттуда обновлять контролы.
Но в крайнем случае, можно просто периодически давать "просраться" очереди сообщений с помощью Application.DoEvents().
Ответ написан