[英]Inserting a huge dataset into C# combo box
我正在尝试加载一个 10k 行数据库 XML 导出到 C# 的组合框中,但是打开 window 的时间需要很长时间,而且我确信它仍然需要花费我很多时间来处理,我确信它仍然需要花费很多时间来处理我的 CPU 线程。 我尝试在 C# 中创建一个新线程,但出现跨线程错误。 我有什么办法可以将加载时间缩短到 1 或 2 秒?
public partial class AddGameWindow : Form
{
public AddGameWindow()
{
InitializeComponent();
Application.UseWaitCursor = true;
}
private void AddGameWindow_Load(object sender, EventArgs e)
{
var doc = XDocument.Parse(Properties.Resources.GameDB);
var rows = doc.Descendants("table").Select(el => new Game
{
Name = el.Element("title").Value,
Url = el.Element("link").Value,
Img = el.Element("imglink").Value
});
if (gamesList.Items.Count == 0 ) {
// for some reason fires again when window closed :(
int i = 0;
foreach (var row in rows)
{
//nejak to tam nahazet at to dlouho netrva
gamesList.Items.Insert(i, row.Name);
i++;
}
Application.UseWaitCursor = false;
}
}
}
class Game
{
public string Name;
public string Url;
public string Img;
}
如果您一次将大量项目推送到基于列表的控件中,则需要利用BeginUpdate/EndUpdate
请注意评论中的建议; 大约 20 多个项目的组合非常无法使用。 查看“在此文本框中输入并将其用作过滤器”,可能是“仅在用户键入 3 个字符后开始过滤”和“仅在延迟 500 毫秒后才开始过滤,而不是在每次按键时过滤”类型行为。 .
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.