1
我有點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
然後繼續打(我甚至不跨越),它正確保存。如果斷點不存在,則不保存。
程序確實在其他部分使用了後臺工作人員,但他們沒有在我的測試用例中運行。
任何幫助將不勝感激。
聽起來像它可能是一個線程問題。 – duffymo 2010-05-14 17:06:43
不是問題,但BindingSource.EndEdit()是不必要的,在這種情況下不做任何事情。 – 2010-05-14 17:28:30
我沒有產生任何觸及'ContractFlowTool.Properties.Settings.Default.RecentClinics'的線程,它在主線程上運行。 – 2010-05-14 18:09:26