Eseguire un file lock in C#
C# ha una modalità molto semplice per bloccare i file, basta usare la classe FileStream.
Qui possiamo trovare i metodi Lock e Unlock, che ci consentono di bloccare / sbloccare anche solo porzioni di un file.
Qui sotto un esempio basico, in cui blocchiamo il file e poi proviamo a cancellarlo:
using System;
using System.IO;
namespace CSharpTest
{
class Program
{
static void Main(string[] args)
{
try
{
string fileToLock = "test.txt";
using (FileStream fs = new FileStream(fileToLock, FileMode.Open,
FileAccess.Read, FileShare.None))
{
Console.WriteLine("Blocco il file");
fs.Lock(0, fileToLock.Length);
Console.WriteLine("Provo a cancellare il file");
File.Delete(fileToLock);
}
}
catch (IOException ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
Questo l'output:
Blocco il file
Provo a cancellare il file
Il processo non può accedere al file 'test.txt' perché è in uso da un altro processo.
Premere un tasto per continuare . . .
Come vedete, impostando il lock sul file, non ci viene permesso di cancellarlo.
Se poi chiudete il programma, il file viene sbloccato e potete cancellarlo.
Oppure, per studio, potete provare ad usare il metodo Unlock.
Enjoy!
c# filestream.lock unlock
2 Commenti
ciao! io ho provato per curiosità in entrambi i modi, e hanno funzionato tutti e due!
27/02/2023Forse il secondo argomento della Lock doveva essere fs.Length al posto di fileToLock.Length? ... altrimenti mi sta sfuggendo qualcosa. Grazie
24/02/2023