Frage

In meinem Projekt habe ich einige temporäre Dateien in einem USB-Gerät erstellen, die ich beim Schließen löschen möchten. So habe ich einen Code wie

this.fcommandHandler = new FileStream(TempFileName,
FileMode.CreateNew, FileAccess.ReadWrite,
FileShare.ReadWrite, 512, FileOptions.DeleteOnClose);

Es funktioniert gut. Aber das Problem ist, ich noch eine FileOption verwenden möchten, wie keine Pufferung.

private const FileOptions FILE_FLAG_NO_BUFFERING = (FileOptions)0x20000000;

this.fcommandHandler = new FileStream(TempFileName,
FileMode.CreateNew, FileAccess.ReadWrite,
FileShare.ReadWrite, 512, FileOptions.DeleteOnClose & FILE_FLAG_NO_BUFFERING);

Aber es ist nicht die Datei zu löschen nach dem Schließen. Bitte helfen.

War es hilfreich?

Lösung

Sie müssen statt | & verwenden.

Dies sind Binärflags, und wenn Sie & sagen, Sie effektiv sie alle weg Maske, überhaupt in keine Optionen zur Folge hat.

Andere Tipps

Mit FileOptions.DeleteOnClose | FILE_FLAG_NO_BUFFERING der & hebt sie aus.

FILE_FLAG_NO_BUFFERING & FileOptions.DeleteOnClose kehrt FileOptions.None

Versuchen einschließlich der WriteThrough Flagge als auch in einer Liste der Verwendung | Operator. Sehen Sie dieses KB zu den Anforderungen an FILE_FLAG_NO_BUFFERING verwenden. Seine interessant, dass MS dieses Flag nicht enthalten ist in der Enum. Gibt es einen Grund, warum WriteThrough nicht tut, was Sie in diesem Szenario müssen? Sie versuchen, eine sichere Daten schreiben?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top