Eseguire un file lock in C#

Mattepuffo's logo
Eseguire un file lock in C#

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!


Condividi

2 Commenti

  • marco

    ciao! io ho provato per curiosità in entrambi i modi, e hanno funzionato tutti e due!

    27/02/2023
  • Giuseppe

    Forse il secondo argomento della Lock doveva essere fs.Length al posto di fileToLock.Length? ... altrimenti mi sta sfuggendo qualcosa. Grazie

    24/02/2023

Commentami!