部分功能代码未执行

时间:2010-09-18 03:54:16

标签: c# wpf dynamic populate

我有一个用C#构建的WPF程序,其部分功能是填充两个ListBox控件。在Window_Loaded事件中,程序调用Update()函数以填充ListBox,但它只执行部分函数。如果我在对文件进行追加后调用该函数,该函数甚至会崩溃。该文件的结构如下:

  

content_for_first_listbox   content_for_second_listbox

功能更新如下:

private void UpdateURL()
{
    StreamReader rdr = new StreamReader("Links.db");
    string line;
    int dummy;
    URL.Clear();
    TAGS.Clear();
    while ((line = rdr.ReadLine()) != null)
    {
        dummy = line.IndexOf(' ');
        URL.Add(line.Substring(0, dummy));
        TAGS.Add(line.Substring(dummy + 1));
    }
    rdr.Close();
    LLinks.Items.Clear();
    LTags.Items.Clear();
    for (int a = 0; a < URL.Count; a++)
    {
        LLinks.Items.Add(new ListBoxItem().Content = URL[a]);
        LTags.Items.Add(new ListBoxItem().Content = TAGS[a]);
    }
}

它在第一个循环后停止执行,我从调试中发现了。这是追加函数

private void LBookmarkBT_Click(object sender, RoutedEventArgs e)
{
    StreamWriter wrt = new StreamWriter("Links.db", true);
    wrt.Write("\n" + LURLTBox.Text + " " + LTagsTBox.Text);
    wrt.Close();
    UpdateURL();
}

有什么想法吗?

更新:问题是它正在读取所有行并正确解析它们然后它将无处读取换行符,行字符串变为“”,因此dummy = -1并且它抛出了一个长度异常。我设法通过将循环放在try-catch块中并丢弃异常来克服这个问题,并且一切正常,但如果我可以这样说,它似乎有点“脏”。我该怎么办 ?也许和if(dummy == -1)不解析这条线?

        try
        {
            while ((line = rdr.ReadLine()) != null)
            {
                dummy = line.IndexOf(' ');
                URL.Add(line.Substring(0, dummy));
                TAGS.Add(line.Substring(dummy + 1));
            }
        }
        catch (Exception e)
        { }

1 个答案:

答案 0 :(得分:4)

尝试在“例外”对话框中启用“在抛出异常时中断”(在VS.Net / Debug \ Exceptions ...菜单选项中按Ctrl + Alt + E)。这会在抛出异常时破坏调试器 - 这几乎肯定是你在这里得到的。