open file in exclusive mode in C#

c#, file, io

Solution

What you are doing is the right thing. Probably you are just testing it incorrectly. You should open it with a program that locks the file when it's open. Notepad wouldn't do. You can run your application twice to see:

static void Main(string[] args)
{
    // Make sure test.txt exists before running. Run this app twice to see.
    File.Open("test.txt", FileMode.Open, FileAccess.Read, FileShare.None);
    Console.ReadKey();
}

Problem

I want to open a file for read in exclusive mode, and if the file is already opened by some process/thread else, I want to receive an exception. I tried the following code, but not working, even if I opened the foo.txt, I still can reach the Console.WriteLine statement. Any ideas? ``` static void Main(string[] args) { using (Stream iStream = File.Open("c:\\software\\code.txt", FileMode.Open, FileAccess.Read, FileShare.None)) { Console.WriteLine ("I am here"); } return; } ```

Original source