どのような方法は、Windowsサービス内の変数を永続化するために受け入れられた方法

私は常時稼働しているWindowsサービスを持っていますが、前回から24時間以上経過している場合にのみ起動します。したがって、最後にペイロードを実行してから、時間と日付を格納する必要があります。

これを行うには、私はApp.Configに次のものを書くことを考えていました:

ConfigurationManager.AppSettings.Set("LastRunTime", DateTime.Now.ToString());

しかし、これは永続するようには見えませんが、サービスが再起動された場合はキャッシュが悪くなります。

だから、Windowsサービスの値を永続化するために受け入れられる方法は何ですか?

2
私はむしろそれが依存していると思う、しばしばデータベースにデータを格納することは良いアイデアです。たぶん、単純なテキストファイルの方が扱いにくいかもしれません。
追加された 著者 Jodrell,
あなたはあなたのアプリの設定、つまりユーザフォルダのために別の場所を指定できますか?私の推測では、system32のセキュリティのために永続的ではないということでしょうか?
追加された 著者 JonAlb,
System.Configuration.Configuration.Save()または.SaveAs()を使用できませんか?
追加された 著者 GB11,

2 答え

データベース、単純なXML /テキストファイル、レジストリ値を使用します。

また、あなたの要件に基づいて、タスクスケジューラを使用して実行される単純なコンソールアプリケーションが別のオプションかもしれません。

6
追加された
それは十分ですが、データベースは単純な価値のために過剰です。だから受け入れられた方法は何ですか?私は既に管理者にコンソールアプリケーションを言及しました、彼らはその方法に興味がありません。
追加された 著者 m.edmondson,
あなたの気持ちは最高です。 DBが過剰な場合は、text/xmlファイルまたはレジストリ値を使用します。おそらく、このための「受け入れられた」方法、個人的な好みを見つけるつもりはありません。
追加された 著者 ChrisBint,
並行性が必要ですか?テキストファイルを使用するときは注意してください。
追加された 著者 Marc,

私はこの記事と@ChrisBintが私がそれを保存したものとインラインでオブジェクトをシリアライズしましたテキストファイルに変換します。これは私が「受け入れられた」ものとして探していたものですが、私はテキストファイルに書き込むことができますが、私が探していた方法でした。私は、データを永続化するための独自のメソッドを記述するのではなく、すべての構造化され強く型付けされたものを保持したい

@Chrisは部分的な答えしか提供しなかったので、私は彼をupvotedし、これを受け入れました。

1
追加された
@ChrisBint - 私はあなたが言っていることを理解しています。それはおそらく私の代わりに適切な質問をすることに失敗しています。
追加された 著者 m.edmondson,
「受け入れる」?誰によって?私はupvoteを感謝しながら、あなたの質問は、Windowsサービスの値を永続化するために受け入れられるメソッドとそのリンクは確かにそうではないことを尋ねました、それは標準的なシリアル化技術です。あなたの質問は、実装の詳細については求めていませんが、これをどうやって行うことができるかについての提案だけです。これに基づいて、私はそれが答えのようなものを表しているとは思わないので、これを下降させました(正直言って、この質問にはないと感じています)
追加された 著者 ChrisBint,