@anonymouss

Почему другие могут перезаписать файл?

Ставлю FileShare.Read или .None - но оно почему то не работает
Другой пользователь(второе открытое приложение всеравно может открывать и пересохранять)
А мне нужно чтобы только один пользователь мог пересохранять, а другие нет, до момента завершения работы с файлом

using(FileStream fs = new FileStream(openFileDlg.FileName, FileMode.Open, FileAccess.ReadWrite, FileShare.Read))
                        {
                            try
                            {
                                int size = (int)fs.Length;
                                byte[] buffer = new byte[size];
                                int count = 0;
                                int sum = 0;
                                while ((count = fs.Read(buffer, sum, size - sum)) > 0)
                                {
                                    sum += count;
                                }
                                textBox.Text = Encoding.UTF8.GetString(buffer);
                            }
                            finally
                            {
                                if (fs != null)
                                    fs.Close();
                            }
                        }
  • Вопрос задан
  • 208 просмотров
Решения вопроса 1
@kttotto
пофиг на чем писать
Не совсем понятен вопрос. Если нужны права доступа пользователя к файлу, то их надо проверять перед чтением файла.

По идее пока поток открыт, то доступ к файлу будет заблокирован, при попытке получить еще один доступ будет выскакивать эксепшин. Можно посмотреть, после while поставить брекпоинт или thread.sleep и с второго приложения попытаться прочитать файл.

И если создание потока прячется в using, то нет смысла прятать код в try/finally и руками вызывать close(). Юзинг как раз и предназначен для того, чтоб об этом не беспокоиться, он сам разворачивается в try/finally, в котором поток и закроется.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы