C# 保存用户设置的最佳时间
我有一个使用用户设置的.Net应用程序。保存这些设置的最佳时间是什么时候 为了清楚起见,我调用此函数是为了保存:C# 保存用户设置的最佳时间,c#,.net,wpf,C#,.net,Wpf,我有一个使用用户设置的.Net应用程序。保存这些设置的最佳时间是什么时候 为了清楚起见,我调用此函数是为了保存: Storage.Properties.Settings.Default.Save() 首先,我想在每次更改时保存它们,但这样做很慢,而且似乎没有必要。文档表明,它们只需要在应用程序关闭时保存,在他们的示例中,是在表单关闭时保存 但是,如果有两个应用程序实例在运行呢?似乎如果我等到应用程序退出事件,设置将不会在实例之间保持。应用程序的新实例将读取旧的用户设置,从而导致错误 那么,这方
Storage.Properties.Settings.Default.Save()
首先,我想在每次更改时保存它们,但这样做很慢,而且似乎没有必要。文档表明,它们只需要在应用程序关闭时保存,在他们的示例中,是在表单关闭时保存
但是,如果有两个应用程序实例在运行呢?似乎如果我等到应用程序退出事件,设置将不会在实例之间保持。应用程序的新实例将读取旧的用户设置,从而导致错误
那么,这方面的最佳实践是什么呢?答案是特定于应用程序的,因此没有最佳实践。例如,有些应用甚至不允许多个实例 但大多数应用程序倾向于做以下事情之一:
- 它们不会经常更改设置,因此一次保存一整套更改(例如,在配置对话框中应用更改时)
- 它们经常在后台更改,因此设置某种计时器事件以在特定时间间隔保存
- 它们经常更改,但非常明确,因此有一些“保存更改”按钮供用户单击
几年前,我写了一个玩具系统托盘式的应用程序,采用了“退出时保存”的策略,但后来后悔了。显式保存和/或间隔保存是更好的选择。这是Visual studio的扩展吗?还是win应用程序?这是win应用程序。C#,.NET4,WPF4。如果我把问题填错了,对不起,请告诉我。我同意。我的应用程序需要支持多个实例。我通常在窗体关闭时保存。使用、WPF和绑定,每当用户与界面交互时,我都会保存用户设置。但是,引起我担忧的一个例子是,我有一个带有书签的XML数据库。每个书签都有一个唯一的ID。因此,我使用用户设置保存最后一个唯一的ID。因此,如果每次更改用户ID时都保存,则导入大型集的速度会很慢。如果在应用程序退出时保存,则多个实例可能会出现问题。导入后保存会使代码仍然存在问题。@Michael:听起来你应该采取多种策略:始终在GUI上立即保存,并支持“批量导入”模式,一次保存一组更改,而不是一项保存一次。回答不错。我想再加上我的两分钱。就我个人而言,除非用户明确单击“保存更改”按钮,否则我不会保存更改,但是,我会在应用程序运行时将设置保留在内存中。因此,即使多个实例正在运行,主配置也不会更改,除非用户明确要求,但可以临时更改,以便用户可以使用不同的设置。@Michael:另外,如果您确实有充分的理由支持多个实例共享数据,然后,您应该强烈地考虑使用更健壮的数据库作为后端。Sqlite可能是个不错的选择。@Dementic:好主意。在这种情况下,我不打算编辑答案,因为我的观点可以归结为“你的应用程序是一个独特的雪花,没有一个适合所有人的解决方案”;)