gpt4 book ai didi

c# - 从多个线程快速添加到 ListView

转载 作者:行者123 更新时间:2023-11-30 21:03:28 31 4
gpt4 key购买 nike

我在将项目添加到我的 ListView 时使用了以下方法。

我已确保对 ListView 进行双缓冲,并尝试优化我能想到的所有内容 - 但无论我做什么,快速添加项目时 UI 都会变慢。

我遇到这个问题已经有一段时间了,我四处寻找解决方案,但每次都放弃了,因为我无法修复它。这次我希望能解决这个问题。 :)

我是否考虑过使用一些自定义解决方案?有没有可以处理“SPEED”的好东西?或者我可以用我当前的代码做些什么?

方法:

private void AddNewItemToListView(string gPR, string rank, string category, string name, string url, string email, string address, string phone, string metadesc, string metakeywords, string mobile, string numbofreviews, string rating, string facebook, string twitter, string googleplus, string linkedin, string sitemap, string siteage, string backlinks, string trafficvalue)
{
Invoke(new MethodInvoker(
delegate
{
string[] row1 = { url, urlSec, address, phone, metadesc, metakeywords, mob, REV, RT, gPR, FB, TW, googleplus, LI, ST, SA, BL, TV };
ListViewItem item = new ListViewItem();

flatListView1.Items.Add(name).SubItems.AddRange(row1);
}
));
}

最佳答案

您能否在工作开始时使用 ListView.SuspendLayout() 方法,然后在工作结束时调用 ListView.ResumeLayout()?我认为这会加快很多事情。您也可以尝试定期恢复以获取一些反馈。例如,在指定位置插入以下代码:

// Start of work
flatListView1.SuspendLayout();

// Below code inside your delegate

flatListView1.Items.Add(name).SubItems.AddRange(row1);

if ((flatListView1.Items.Count % 1000) == 0)
{
// Force a refresh of the list
flatListView1.ResumeLayout();
// Turn it off again
flatListView1.SuspendLayout();
}

// End of code inside delegate

// Resume layout when adding is finished

flatListView1.ResumeLayout();

关于c# - 从多个线程快速添加到 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12844078/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com