【发布时间】:2018-04-26 02:20:01
【问题描述】:
我经常发现自己为用户范围设置这样做:
My.Settings.MySetting = MyValue
My.Settings.Save()
当然,VB.NET 中的用户范围设置会在退出时自动保存,但如果发生意外终止或会话崩溃,保存更改仍然更安全。
我的问题:有没有一种我不知道的方法可以让设置的更改自动触发保存机制?
【问题讨论】:
-
恰恰相反。在程序退出时保存设置会更安全。当更改的设置导致程序崩溃时,您想要这样做的方式可能会创建一个非常丑陋的场景。重新启动它会再次崩溃。一遍又一遍地。用户完全被卡住了,重新安装程序不会解决问题,他永远也找不到坏文件。如果您的程序经常崩溃,从而激发了这个 hack,请改为解决 那个 问题。
-
通过
My.Settings暴露的对象有一个PropertyChanged事件,您可以在那里处理和调用Save。 -
@HansPassant 我不会将“保存更改”模型称为“黑客”。把它想象成一个“自动保存”功能。不,甚至远未接近“例行崩溃”。实际上,到目前为止,我在测试期间都无法回忆。无论如何,我最终选择了“退出时保存”路线,主要是因为它与“取消”功能配合得更好,在这种情况下,保存设置就没有意义了。