当我使用类型安全的应用程序设置时,我的 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
从外部监视对此设置的更改的最佳做法是什么。即,该设置由作为服务运行的应用程序使用,当有人打开相应的配置文件并将 IntervalTimeout 更改为假设为 30 时,服务应用程序会收到通知并执行我告诉它重新配置的任何操作。
通常,我会在初始化期间使用这样的东西:
AddHandler Settings.PropertyChanged, New PropertyChangedEventHandler(AddressOf Settings_PropertyChanged)
然后实现一个 Eventhandler 来检查已更改的属性的名称并做出适当的反应。
但是,PropertyChanged 事件仅在对属性调用 Set 方法时触发,而不是在有人直接更改文件中的数据时触发。当然,这本来就是天堂,但可以理解的是,这不是它的工作方式。;-)
最有可能的是,我会实现一个文件系统观察器来监视文件的更改,然后重新加载配置,找出更改的内容,然后做任何必要的事情来反映这些更改。
有谁知道更好的方法?甚至是受支持的?