2011-10-28 5 views
2

私は常に実行されるWindowsサービスを持っていますが、前回より少なくとも24時間は有効です。したがって、最後にペイロードを実行してから、時間と日付を格納する必要があります。私はApp.configファイルへの書き込みを考えていたこの行うにはWindowsサービスで変数を永続化するために受け入れられる方法

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

をしかし、これが持続するように見えるのではなく、サービスを再起動する場合は良くないキャッシュされません。

Windowsサービスの値を永続化するには、どのような方法がありますか?

+0

私はむしろそれが依存すると思う、しばしばデータベースにデータを格納することは良い考えです。たぶん、単純なテキストファイルの方が扱いにくいかもしれません。 – Jodrell

+0

あなたのアプリケーション設定の別の場所、ユーザーフォルダを指定できますか?私の推測では、system32のセキュリティのために永続的ではないということでしょうか? – JonAlb

+0

System.Configuration.Configuration.Save()または.SaveAs()を使用できませんか? –

答えて

1

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

@Chrisは部分回答を提供して以来、私は彼をあきらめてこれを受け入れました。

+1

'承認済み'ですか?誰によって?私はupvoteを感謝しながら、あなたの質問は、Windowsサービスの値を永続化するために受け入れられるメソッドとそのリンクは確かにそうではないことを尋ねました、それは標準的なシリアル化技術です。あなたの質問は、実装の詳細については求めていませんが、これをどうやって行うことができるかについての提案だけです。これに基づいて、私はそれが答えのようなものを表すとは思わないので、これを下降させました。(正直言って、この質問にはないと感じています) – ChrisBint

+0

@ChrisBint - あなたが言っていることを理解しています。私の代わりに適切な質問をすることに失敗したので、ここで将来価値がないと思われるので、削除することを考えます。 –

6

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

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

+1

それは十分ですが、データベースは単純な価値のために過剰です。だから受け入れられた方法は何ですか?私は既に管理者にコンソールアプリケーションを言及しました、彼らはその方法に興味がありません。 –

+2

あなたの気持ちは最高です。 DBが過剰な場合は、text/xmlファイルまたはレジストリ値を使用します。おそらく、このための「受け入れられた」方法、個人的な好みを見つけるつもりはありません。 – ChrisBint

+0

同時実行が必要ですか?テキストファイルを使用するときは注意してください。 – Marc

関連する問題