0

データを保存する次のコードがあります。

File.Copy("data.txt", "data_backup.txt", true);
File.WriteAllText("data.txt", JsonConvert.SerializeObject(new
{
    bool1,
    string1,
    decimal1,
    decimal2,
    int1,
    datetime,
    object1,
    object2
}, new JsonSerializerSettings { Formatting = Formatting.Indented, Converters = new List<JsonConverter>() { new DontIntendArray() } }));

私のプログラムは15秒ごとに実行されます。data.txt のサイズは約 9 MB です。

時々、コンピューターがクラッシュし、再起動後に data.txt が NULL 文字でいっぱいになり、サイズが約 9 MB のままであることがわかります。そのため、data_backup.txt 行を追加しましたが、NULL でいっぱいのファイルも保存されるため、役に立ちません。

これはすべてのコンピューターで発生するわけではなく、このコードの実行中にクラッシュした場合にのみ発生することに注意してください。

RAM で XMP プロファイルを使用しているときにこの動作が発生しましたが、これは不安定で時々クラッシュを引き起こしました。XMR プロファイルが不安定な 2 台の異なるコンピューターでもまったく同じでした。停電の時も経験しました。

クラッシュするコンピューターがすべてのコードを完璧に実行してからクラッシュするとは期待できないことを理解しています。ただし、コンピューターがクラッシュする直前に書き込み中または保存中のファイルの内容が失われるのを防ぐために使用できるトリックはありますか? これらの変数を定期的にファイルに保存する全体的な目的は、コンピューターがクラッシュした場合のデータの損失を防ぐことですが、明らかにこのアプローチが常に機能するとは限りません。

4

1 に答える 1