【发布时间】:2010-11-09 08:00:42
【问题描述】:
当我使用类型安全的应用程序设置时,我的 app.exe.config 文件中有类似的内容:
<setting name="IntervalTimeout" serializeAs="String">
<value>10</value>
</setting>
Settings.Designer.vb 做了这样的事情:
<Global.System.Configuration.ApplicationScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("10")> _
Public ReadOnly Property IntervalTimeout() As Integer
Get
Return CType(Me("IntervalTimeout"),Integer)
End Get
End Property
我可以通过以下方式访问设置:
Settings.IntervalTimeout
从外部监控此设置的更改的最佳做法是什么。 IE。该设置由作为服务运行的应用程序使用,当有人打开相应的配置文件并将 IntervalTimeout 更改为假设为 30 时,服务应用程序会收到通知并执行我告诉它重新配置的任何操作。
通常,我会在初始化期间使用类似的东西:
AddHandler Settings.PropertyChanged, New PropertyChangedEventHandler(AddressOf Settings_PropertyChanged)
然后实现一个 Eventhandler 来检查已更改的属性的名称并做出适当的反应。
但是,PropertyChanged 事件仅在对属性调用 Set 方法时触发,而不是在有人直接更改文件中的数据时触发。当然,这本来是天堂,但可以理解的是,这不是它的工作方式。 ;-)
很可能,我会实现一个文件系统观察器来监视文件的更改,然后重新加载配置,找出更改的内容,然后执行任何必要的操作来反映这些更改。
有人知道更好的方法吗?甚至是受支持的?
【问题讨论】:
标签: configuration settings app-config appsettings propertychanged