Locking behaviour is different via network shares
        Posted  
        
            by MattH
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by MattH
        
        
        
        Published on 2010-04-23T09:58:58Z
        Indexed on 
            2010/04/23
            10:03 UTC
        
        
        Read the original article
        Hit count: 437
        
I have been trying to lock a file so that other cloned services cannot access the file. I then read the file, and then move the file when finished. The Move is allowed by using FileShare.Delete.
However in later testing, we found that this approach does not work if we are looking at a network share. I appreciate my approach may not have been the best, but my specific question is:
Why does the below demo work against the local file, but not against the network file?
The more specific you can be the better, as I've found very little information in my searches that indicates network shares behave differently to local disks.
string sourceFile = @"C:\TestFile.txt";
string localPath = @"C:\MyLocalFolder\TestFile.txt";
string networkPath = @"\\MyMachine\MyNetworkFolder\TestFile.txt";
File.WriteAllText(sourceFile, "Test data");
if (!File.Exists(localPath))
    File.Copy(sourceFile, localPath);
foreach (string path in new string[] { localPath, networkPath })
{
    using (FileStream fsLock = File.Open(path, FileMode.Open, FileAccess.ReadWrite, (FileShare.Read | FileShare.Delete)))
    {
        string target = path + ".out";
        File.Move(path, target); //This is the point of failure, when working with networkPath
        if (File.Exists(target))
            File.Delete(target);
    }
    if (!File.Exists(path))
        File.Copy(sourceFile, path);
}
        © Stack Overflow or respective owner