當我使用類型安全的應用程序設置,我有這樣的事情在我app.exe.config文件:監視對在App.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)
,然後實現它檢查已經改變並作出適當的反應屬性的名稱的事件處理程序。
但是,只有在某個屬性上調用Set方法時,纔會觸發PropertyChanged事件,而不是在有人直接在文件內更改數據時觸發。當然,這將是天堂,但可以理解的是,這不是它的工作方式。 ;-)
最有可能的是,我會實現一個文件系統監視器來監視文件的更改,然後重新加載配置,找出發生了什麼變化,然後做任何必要的事情來反映這些變化。
有誰知道更好的方法?甚至是支持的?