C# GUI に構成を保存するために、ini ファイルを使用しています。しかし、GUIを再度起動して構成を保存すると、以前に保存した構成が上書きされます。設定を保存し続ける方法はありますか?
2 に答える
app.config
.ini の代わりにファイルを使用したい。名前空間ConfigurationManager
からを使用して、その設定にアクセスします。System.Configuration
から継承するクラスを作成することで、カスタム構成セクションを作成することもできますConfigurationSection
。これにより、構成ファイルのインテリセンス サポートも提供されます。
その一例 (asp.net を使用していますが、任意の .net コードで機能します) はhereです。
編集:質問を読み直して、アプリケーション設定を保存しようとしているapp.config
か( )、セッションデータをディスクに保存しようとしているか(レコードの保存またはオブジェクトのシリアル化)が不明です。前者の場合は を見てくださいapp.config
。同じ「設定」を設定するが異なる値 (複数の SQL 接続文字列を持つなど) を持つ複数の項目を使用し、ユーザーから取得したパラメーターでそれらを呼び出すこともできます。
セッション データ/状態を保存しようとしている場合は、オブジェクトをシリアル化する必要があります。ディスクに永続化するために、シリアル化/逆シリアル化 (多くのオプションが利用可能) と System.IO 名前空間を調べてください。
毎回同じファイルを上書きしないようにする唯一の方法は、ファイル名を一意にすることです。
FileName<TimeStamp>.ini
または
FileName<Guid>.ini
または、ウィンドウが重複ファイルに対して行うことを実行し、すでに存在する数を確認して、最後に新しい番号を追加することもできます。
FileName.ini
FileName1.ini
FileName2.ini
個人的には、タイムスタンプ/GUID アプローチを使用します。ここにいくつかのコード例があります
class Program
{
static void Main()
{
for (int i = 0; i <= 10; i++)
{
SaveConfiguration();
Thread.Sleep(500);
}
}
private static void SaveConfiguration()
{
string fileName = System.IO.Path.Combine(@"Config\File\Dir", String.Format("Config{0:yyyyMMddHHmmss}.ini", DateTime.UtcNow));
System.IO.File.WriteAllText(fileName, "File contents");
}
}