PDA

View Full Version : [C#] Accesso esclusivo a file


andreapav
08-03-2010, 14:35
Ciao a tutti!
sto facendo un programma che comunica con un altro per mezzo di un file.
praticamente dal mio lato devo leggere il file e cancellarlo mentre dall'altro lato vengono appese stringhe di testo.
Chiaramente capita che entrambe i programmi accedano contemporaneamente al file, come faccio per assicurare dal mio lato l'accesso esclusivo?? non posso toccare l'altro programma!!

Grazie dell'aiuto! ciao!

fdfdfdddd
08-03-2010, 19:43
Spero di non dire castronerie: mi pare che utilizzando esclusivamente il .Net Framework non ci sia modo di capire se un file è "lockato" o meno ma bisogna ricorrere alle API di Windows (oppure gestendo l'eccezione per l'accesso in crittura non riuscito...).

In caso contrario, sarò felicissimo d'imparare qualcosa di nuovo, visto che è un problema che mi è capitato qualche tempo fa :-)

gugoXX
08-03-2010, 21:32
in questo modo


var file = File.Open("FileName", FileMode.Open, FileAccess.ReadWrite, FileShare.None);

Ottieni l'accesso esclusivo al file, in lettura e scrittura. L'accesso esclusivo e' l'ultimo parametro. FileShare.None significa che l'accesso al file non sara' condiviso con nessun altro.
NEssun altro processo potra' accedere al file fino alla file.Close();

andreapav
12-03-2010, 13:24
Grazie!
scusate, non ho avuto tempo di ringraziare!! :S

Ho provato con FileShare.None ma l'altro programma entrava comunque o comunque ci provava, insomma mi veniva fuori l'errore.

Per chi leggesse questo post in futuro: ATTENZIONE CHE NON HO CONTROLLATO IL DISCORSO DEL FILESHARE (infatti ho scoperto dell'esistenza di file semaforo generati e letti dall'altro programma e ho lasciato perdere questo discorso!)

Ciao!