У меня есть немного 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
Не проблема, но BindingSource.EndEdit() не требуется и в этом случае ничего не делает. –
Я не создаю ни одного другого потока, который касается 'ContractFlowTool.Properties.Settings.Default.RecentClinics', который работает в основном потоке. –