/ / Eccezione C # IO il file o la directory sono danneggiati e illeggibili - c #, .net

Eccezione C # IO il file o la directory è corrotto e illeggibile - c #, .net

A volte la mia applicazione lancia un'eccezione dicendo che il file è corrotto o non è possibile. Fondamentalmente questo file è un file di registro. La mia applicazione scrive eventi e alcuni dati nel file di registro.

La mia domanda è stata inserita nella scatola incorporataquale sistema operativo Windows XP è in esecuzione. L'unico modo per chiudere l'applicazione è di spegnere l'alimentazione della scatola. Poiché Windows non si arresta in modo corretto, il file è corrotto a volte (questo è quello che sto pensando).

Sto usando Intel SSD come unità. Ho abilitato la memorizzazione nella cache di scrittura sul disco. Ciò causa la corruzione del file?

Se catturo l'eccezione, posso cancellare questo file usando le funzioni di file c # (file.delete)?

Saluti

risposte:

5 per risposta № 1

La scrittura nella cache non causa il danneggiamento dei file. L'arresto della macchina mentre il file è aperto causa la corruzione del file.

Se si cattura l'eccezione, si dovrebbe essere in grado di eliminare il file.

Probabilmente puoi ridurre la frequenza degli errori se chiami Flush sul file di registro ogni volta che si scrive su di esso. Si può quasi eliminare completamente l'errore se si chiude il file dopo ogni scrittura (che, ovviamente, richiederebbe l'apertura per l'aggiunta prima di ogni scrittura). Potrebbe essere proibitivo.

Non puoi completamente eliminare l'errore fino a quando l'unico modo perspegnere l'applicazione è quello di rimuovere la potenza. Si potrebbe prendere in considerazione la possibilità di ruotare il registro, quindi, se viene danneggiato, si perde solo l'ultima ora (o 15 minuti o qualsiasi quantità di tempo che si utilizza per la frequenza di rotazione del registro).