タイプセーフなアプリケーション設定を使用すると、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 メソッドがプロパティで呼び出されたときにのみ発生し、誰かがファイル内のデータを直接変更した場合には発生しません。もちろん、これは天国だったでしょうが、これがうまくいかないことは理解できます。;-)
おそらく、filesystemwatcher を実装してファイルの変更を監視し、構成をリロードして、何が変更されたかを調べ、それらの変更を反映するために必要なことをすべて実行します。
誰かがより良い方法を知っていますか? それともサポートされているものですか?