Мне нужно создать приложение сортировки, которое отображает текущие операции.
Я сделал это вот так:Операции в фоновом режиме с реакцией пользовательского интерфейса
У меня есть коллекция int
s. Внутри него у меня есть алгоритмы сортировки и «шаг» события, который выполняет две операции «например». сравнение, перестановка и т. д. и int[]
элементов, с которыми я что-то делаю.
Я хочу изменить элемент фона в ListView
, если сортировка делает что-то с определенными элементами. «250 мс мигает». Нечто подобное:
listView1.Items[1].BackColor = Color.LightGreen;
listView1.Items[2].BackColor = Color.LightGreen;
Thread.Sleep(250);
for (int i = 0; i < args.Length; i++)
{
listView1.Items[i].BackColor = Color.White;
}
Но когда я пытаюсь начать сортировку, пользовательский интерфейс замерзает и после нескольких секунд отображается как SortedCollection
.
Мой вопрос:
Как показывать «живые» действия в пользовательском интерфейсе во время сортировки?
Ваш вопрос не очень ясен. Объясните, почему вы используете Thread.Sleep. –
Чтобы дать пользователю возможность увидеть изменение цвета. Затем цвет возвращается к белому. Этот код - это всего лишь небольшой фрагмент всего кода. Вот где я думаю, это моя проблема. – Variat
Если это Windows Forms, вы можете вызвать Application.DoEvents. Если это WPF, вы должны реализовать это с анимацией в стиле. – hoodaticus