我有一个包含一堆东西的 ListView。第 17 个位置的任何内容总是中断(ObjectDisposedException“无法从关闭的 TextReader 中读取”)。1 到 16 以及 18 到 24 工作正常。如果我将 x 从第 17 位移到第 16 位,它会再次起作用,但新的第 17 位会中断。我的代码没有具体提到任何地方。
XML 文件遵循以下格式
<Profiles>
<Profile name="a" type="A">
<ListOne>1,2,3,4,5,6,7,8</ListOne>
<ListTwo>1,2,3,4,5,6,7,8</ListTwo>
</Profile>
<Profile name="b" type="B">
...
...
</Profiles>
代码很简单。我有一种方法可以找到我感兴趣的配置文件并将其作为子树返回
string CurrentProfile = "";
using (StreamReader SR = new StreamReader(MyXMLFilePath))
{
XmlTextReader TR = new XmlTextReader(SR);
do
{
TR.ReadToFollowing("Profile");
TR.MoveToFirstAttribute();
CurrentName = TR.Value;
TR.MoveToNextAttribute();
string CurrentType = TR.Value;
if (CurrentName == MyName && CurrentType == MyType)
{
TR.MoveToElement();
XmlReader subtree = TR.ReadSubtree();
return subtree;
}
}
while (CurrentName != "");
}
然后我有一个从子树中提取列表 1 和 2 的方法。
if(subtree != null)
{
subtree.ReadToFollowing("ListOne");
subtree.Read();
string[] ListOneArray = subtree.Value.Split(',');
subtree.ReadToFollowing("ListTwo");
subtree.Read();
string[] ListTwoArray = subtree.Value.Split(',');
}
这就是问题发生的地方。ObjectDisposedException 无法从关闭的 TextReader 中读取。当我到达 subtree.ReadToFollowing("ListTwo") 时它总是会中断,但前提是我选择了 XML 列表中的第 17 个配置文件。我看不出我是如何关闭文本阅读器的。此外,这适用于配置文件 18、19、20 等以及 1 到 16,但不知何故总是在位置 17 处中断,无论那里有什么。我看不出第 17 个位置与其他位置有何不同。
请帮忙!