Мое приложение имеет многопоточность, у него есть f.ex 25 активных потоков, и каждый поток передает его статус в элемент списка списка делегатом.ListView - как избежать мерцания (.NET/C#)?
пример:
private delegate void SetBackColorDelegate(int index, Color color);
private void SetBackColor(int index, Color color)
{
if (listView1.InvokeRequired)
{
listView1.Invoke(new SetBackColorDelegate(SetBackColor), new object[] { index, color });
}
else
{
listView1.Items[index].BackColor = color;
}
}
В зависимости от статуса меняет цвет элемента и т.д. И это мерцает много, это выглядит очень противный :)
Может быть, вы можете предложить, как избежать этого? Как ускорить рисование? Или, может быть, я должен подумать о начале использования какого-то другого компонента?
Я думаю, что вы имели в виду мерцание. –
Можете ли вы немного расширить проблему? У вас много потоков, изменяющих цвет элемента, и проблема в том, что цвет сильно меняется? Вы имеете в виду, что это мерцает, как проблема с двойной буферизацией или ваши изменения цвета не работают достаточно быстро, и она постоянно позади, всегда меняя цвет, когда он пытается идти в ногу с собой? Я не понимаю, почему это проблема, когда код запрашивает изменение цвета элемента, а затем цвет меняется. –