Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存用户设置的最佳时间_C#_.net_Wpf - Fatal编程技术网

C# 保存用户设置的最佳时间

C# 保存用户设置的最佳时间,c#,.net,wpf,C#,.net,Wpf,我有一个使用用户设置的.Net应用程序。保存这些设置的最佳时间是什么时候 为了清楚起见,我调用此函数是为了保存: Storage.Properties.Settings.Default.Save() 首先,我想在每次更改时保存它们,但这样做很慢,而且似乎没有必要。文档表明,它们只需要在应用程序关闭时保存,在他们的示例中,是在表单关闭时保存 但是,如果有两个应用程序实例在运行呢?似乎如果我等到应用程序退出事件,设置将不会在实例之间保持。应用程序的新实例将读取旧的用户设置,从而导致错误 那么,这方

我有一个使用用户设置的.Net应用程序。保存这些设置的最佳时间是什么时候

为了清楚起见,我调用此函数是为了保存:

Storage.Properties.Settings.Default.Save()
首先,我想在每次更改时保存它们,但这样做很慢,而且似乎没有必要。文档表明,它们只需要在应用程序关闭时保存,在他们的示例中,是在表单关闭时保存

但是,如果有两个应用程序实例在运行呢?似乎如果我等到应用程序退出事件,设置将不会在实例之间保持。应用程序的新实例将读取旧的用户设置,从而导致错误


那么,这方面的最佳实践是什么呢?

答案是特定于应用程序的,因此没有最佳实践。例如,有些应用甚至不允许多个实例

但大多数应用程序倾向于做以下事情之一:

  • 它们不会经常更改设置,因此一次保存一整套更改(例如,在配置对话框中应用更改时)
  • 它们经常在后台更改,因此设置某种计时器事件以在特定时间间隔保存
  • 它们经常更改,但非常明确,因此有一些“保存更改”按钮供用户单击
退出时保存的问题是,当出现导致未处理异常的错误时,更改可能会丢失。如果你的应用程序应该在后台运行,这种情况可能会比你想象的更频繁,尤其是当它仍在开发/测试中时


几年前,我写了一个玩具系统托盘式的应用程序,采用了“退出时保存”的策略,但后来后悔了。显式保存和/或间隔保存是更好的选择。

这是Visual studio的扩展吗?还是win应用程序?这是win应用程序。C#,.NET4,WPF4。如果我把问题填错了,对不起,请告诉我。我同意。我的应用程序需要支持多个实例。我通常在窗体关闭时保存。使用、WPF和绑定,每当用户与界面交互时,我都会保存用户设置。但是,引起我担忧的一个例子是,我有一个带有书签的XML数据库。每个书签都有一个唯一的ID。因此,我使用用户设置保存最后一个唯一的ID。因此,如果每次更改用户ID时都保存,则导入大型集的速度会很慢。如果在应用程序退出时保存,则多个实例可能会出现问题。导入后保存会使代码仍然存在问题。@Michael:听起来你应该采取多种策略:始终在GUI上立即保存,并支持“批量导入”模式,一次保存一组更改,而不是一项保存一次。回答不错。我想再加上我的两分钱。就我个人而言,除非用户明确单击“保存更改”按钮,否则我不会保存更改,但是,我会在应用程序运行时将设置保留在内存中。因此,即使多个实例正在运行,主配置也不会更改,除非用户明确要求,但可以临时更改,以便用户可以使用不同的设置。@Michael:另外,如果您确实有充分的理由支持多个实例共享数据,然后,您应该强烈地考虑使用更健壮的数据库作为后端。Sqlite可能是个不错的选择。@Dementic:好主意。在这种情况下,我不打算编辑答案,因为我的观点可以归结为“你的应用程序是一个独特的雪花,没有一个适合所有人的解决方案”;)