【发布时间】:2014-03-19 00:49:53
【问题描述】:
C# .Net 4.5
我有一个 ListView,它通过这个方法被不同的线程不断更新:
public void UpdateUI_List_SetRow(int rowNum, ListViewItem item)
{
lock (lock_List)
{
try
{
if (this.lstStatus.InvokeRequired)
lstStatus.Invoke(new MethodInvoker(() => lstStatus.Items[rowNum] = item));
else
lstStatus.Items[rowNum] = item;
}
catch (Exception ex)
{
ErrorLogging.Log(ex);
}
}
}
它在更新时不断闪烁。我已经尝试过 DoubleBuffered 修复 (How to prevent flickering in ListView when updating a single ListViewItem's text?),但它没有用。
对不起,如果这是一个重复的帖子,但除了启用双缓冲之外我找不到任何解决方案。
【问题讨论】:
-
如果您的更新太快,也许您可以将您的快速后台更新写入某个集合。然后每 500 毫秒到 1000 毫秒根据该集合更新您的 ListView。
-
..并致电
SuspendLayout和ResumeLayout也可能有所帮助。 -
suspendlayout 没有任何区别。呃..我想我得试着重新编码一下,看看它是否有所作为:(
标签: c# .net multithreading listview