gpt4 book ai didi

c# - 如何在程序中快速加载XML?

转载 作者:行者123 更新时间:2023-11-30 15:35:56 25 4
gpt4 key购买 nike

我正在创建一个小工具,这个工具将包含一个 XML TreeView 。处理小文件的 XML 文件没有问题,但是当我尝试加载一个大的 XML 文件(大小为 21MB)时,我的应用程序变得没有响应并且加载 XML 花费了太多时间,而且大多数时候它没有' 加载 XML。是否有任何修复或调整可以使以下代码更快?

public TreeView(string filename)
{
InitializeComponent();

this.Text = filename;

XmlDataDocument xmldoc = new XmlDataDocument();
XmlNode xmlnode;
FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
xmldoc.Load(fs);
xmlnode = xmldoc.ChildNodes[1];
treeView1.Nodes.Clear();
treeView1.Nodes.Add(new TreeNode(xmldoc.DocumentElement.Name));
TreeNode tNode;
tNode = treeView1.Nodes[0];
AddNode(xmlnode, tNode);
}

private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode)
{
XmlNode xNode;
TreeNode tNode;
XmlNodeList nodeList;
int i = 0;
if (inXmlNode.HasChildNodes)
{
nodeList = inXmlNode.ChildNodes;
for (i = 0; i <= nodeList.Count - 1; i++)
{
xNode = inXmlNode.ChildNodes[i];
inTreeNode.Nodes.Add(new TreeNode(xNode.Name));
tNode = inTreeNode.Nodes[i];
AddNode(xNode, tNode);
}
}
else
{
inTreeNode.Text = inXmlNode.InnerText.ToString();
}
}

最佳答案

您必须将加载部分与构建 TreeView 分开。

然后可以在后台线程 (BackgroundWorker) 上进行加载。

与 TreeView 相关的一切都必须在主线程上发生,但您可以通过使用 SuspendLayout 等加速它。

关于c# - 如何在程序中快速加载XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14341157/

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