代码之家  ›  专栏  ›  技术社区  ›  Scott Chamberlain

应用程序设置不总是保存

  •  1
  • Scott Chamberlain  · 技术社区  · 15 年前

    我有一点 Heisenbug . 我有一个最近搜索的列表,有时它会保存历史,有时它不会。当我附加调试器并单步执行 StartFind() 每次都有效。

    public Form1()
    {
        oldClinicsBindingSource.DataSource = ContractFlowTool.Properties.Settings.Default.RecentClinics;
    }
    private void StartFind()
    {
        (...)
        if (oldClinicsBindingSource.Contains(newClinic))
            oldClinicsBindingSource.Remove(newClinic);
        oldClinicsBindingSource.Insert(0, newClinic);
        oldClinicsBindingSource.EndEdit();
        while (ContractFlowTool.Properties.Settings.Default.NumberOfClinicsToRemember < oldClinicsBindingSource.Count)
        {
            oldClinicsBindingSource.RemoveAt(oldClinicsBindingSource.Count - 1);
        }
        ContractFlowTool.Properties.Settings.Default.Save();
        (..)
    
    }
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    { //Breakpoint on this line
        ContractFlowTool.Properties.Settings.Default.Save();
    }
    
    //In Settings.Designer.cs
    [global::System.Configuration.UserScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public global::System.Collections.ArrayList RecentClinics {
        get {
            return ((global::System.Collections.ArrayList)(this["RecentClinics"]));
        }
        set {
            this["RecentClinics"] = value;
        }
    }
    

    如果我在 { 在里面保存之前 Form1_FormClosing 然后点击继续(我甚至没有跨过),它会正确保存。如果断点不在那里,则不会保存。

    程序在其他部分使用后台工作人员,但在我的测试用例中没有运行它们。

    任何帮助都将不胜感激。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Scott Chamberlain    15 年前

    评论 Save() 里面 StartFind() 似乎已经修好了。

    我仍然好奇为什么会这样。绑定源是否使用内部线程?

    推荐文章