Поведение при блокировании отличается через сетевые ресурсы

Я пытался заблокировать файл так, чтобы другие клонированные сервисы не могли получить доступ к файлу. Я затем считал файл и затем перемещаю файл по окончании. При помощи Перемещения позволяют FileShare.Delete.

Однако в более позднем тестировании, мы нашли, что этот подход не работает, если мы смотрим на сетевой ресурс. Я ценю свой подход, могло не быть лучшим, но мой конкретный вопрос:

Почему делает ниже демонстрационной работы против локального файла, но не против сетевого файла?

Чем более конкретны можно быть, тем лучше, поскольку я нашел очень мало информации в своих поисках, которая указывает, сетевые ресурсы ведут себя по-другому к локальным дискам.

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);
}

Править: Стоит упомянуть, что, если Вы хотите переместить файл от одного сетевого ресурса к другому сетевому ресурсу, в то время как блокировка существует, это работает. Проблема только, кажется, происходит при перемещении файла в той же доле файла, в то время как это заблокировано.

5
задан MattH 23 April 2010 в 10:14
поделиться