Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ожидание разблокировки файла (аналог юниксовского F_SETLKW) / 5 сообщений из 5, страница 1 из 1
14.01.2015, 14:26
    #38854219
Vasiliy_Kashkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание разблокировки файла (аналог юниксовского F_SETLKW)
Как в программе на C# ожидать разблокировки файла, заблокированного через FileStream.Lock? Есть ли какой-нибудь метод, работающий аналогично юниксовскому fcntl(fd,F_SETLK W ,&lock)?
...
Рейтинг: 0 / 0
14.01.2015, 14:31
    #38854227
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание разблокировки файла (аналог юниксовского F_SETLKW)
Например, периодически пробовать открывать его для записи.
...
Рейтинг: 0 / 0
14.01.2015, 14:59
    #38854282
Vasiliy_Kashkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание разблокировки файла (аналог юниксовского F_SETLKW)
Antonariy,
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
            FileStream stream;
            while (true)
            {
                try
                {
                    stream = File.Open("myfile.txt", FileMode.Append);
                }
                catch (IOException ex)
                {
                    Console.WriteLine("Ждём освобождения");
                    continue;
                }

                break;
            }
 
            Console.WriteLine("Дождались");



как-то так? Вариант конечно, но по-моему это костыли. Крутить цикл для ожидания чего-либо имхо не есть хорошо. В идеале должен быть метод, прерывающий программу до разблокировки файла. Например так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
FileStream stream = File.Open("myfile.txt", FileMode.Open, FileAccess.Write, FileShare.Write);

Console.WriteLine("Ждём освобождения");
stream.waitUnlock();//!!!
Console.WriteLine("Дождались");

stream.Close();



где waitUnlock - моя вымышленная функция, аналог которой я хочу найти в реальности.

То, что находил в интернете, также решает эту проблему через исключения, поэтому пишу сюда. Уверен, на такой продвинутой платформе, как .NET Framework такая функция должна быть! Подсказал бы только кто, как она называется ...
...
Рейтинг: 0 / 0
14.01.2015, 15:03
    #38854293
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание разблокировки файла (аналог юниксовского F_SETLKW)
Vasiliy_Kashkin Крутить цикл для ожидания чего-либо имхо не есть хорошо.это совсем не хорошо, для этого есть таймеры.

Возможно что-то есть в FileSystemWatcher, я им следил за созданием/удалением, может и для открытия/закрытия есть события, не помню.
...
Рейтинг: 0 / 0
14.01.2015, 16:26
    #38854433
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание разблокировки файла (аналог юниксовского F_SETLKW)
LockFileEx
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ожидание разблокировки файла (аналог юниксовского F_SETLKW) / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]