Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
32 / 34 / 3
Регистрация: 27.12.2009
Сообщений: 106

Файловый поток не закрывается

21.03.2011, 19:07. Показов 2646. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
StreamReader dict = File.OpenText("dict.txt");
...
dict.Close();
w = new StreamWriter("dict.txt", true);
на строке w = new StreamWriter("dict.txt", true); вылетает исключение: файл уже используется другим процессом. прошу помощи
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.03.2011, 19:07
Ответы с готовыми решениями:

Не закрывается поток
Во время работы дополнительного потока закрываю программу крестиком сверху справа и закрывается главныи поток тока ,а 2 поток продолжает...

Файловый поток в Universal Windows Platform без Await
Добрый день! Кто-нибудь может мне подсказать как получить файловый поток в UWP без вызова Async методов? Я не хочу их использовать...

Почему при Thread.Abort закрывается программа? Как остановить поток?
Есть класс для инвертирования движения мыши. При вызове метода Stop программа продолжает работать. При применении Abort прога закрывается....

10
Заблокирован
21.03.2011, 19:57
У меня была похожая проблема. Попробуй вынести эту строку
C#
1
w = new StreamWriter("dict.txt", true);
в отдельный метод и вызови его после
C#
1
dict.Close();
1
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
21.03.2011, 20:21
А не пробовали инкапсулировать обработчик?
C#
1
2
3
using (...)
{
}
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
22.03.2011, 09:56
Попробуйте написать
C#
1
Thread.Sleep(10);
после
C#
1
dict.Close();
0
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
22.03.2011, 12:13
Цитата Сообщение от ailia Посмотреть сообщение
C#
1
2
3
4
StreamReader dict = File.OpenText("dict.txt");
...
dict.Close();
w = new StreamWriter("dict.txt", true);
C#
1
2
3
4
5
6
7
8
9
10
11
12
using (var streamReader = new StreamReader("dict.txt"))
{
....
streamReader.Close();
}
 
 
using (var streamWriter = new streamWriter ("dict.txt"))
{
....
streamWriter .Close();
}
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
22.03.2011, 12:58
SandWraith, если вы инкапсулируете, то закрывать ничего не надо.
0
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
22.03.2011, 13:46
Цитата Сообщение от Konctantin Посмотреть сообщение
закрывать ничего не надо.
Не надо делать Dispose, да. Но закрывать файл вручную, imho, правильный стиль.
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
22.03.2011, 14:43
эм... о каком стиле вы говорите? "стиль лишнего кода"?
Ок, тогда доколупаюсь и я:
C#
1
2
3
4
5
using (var streamWriter = new streamWriter ("dict.txt"))
{
....
streamWriter .Close();
}
не правильный код, так как перед закрытием надо опустошить буфер, то есть так:
C#
1
2
3
4
5
using (var streamWriter = new streamWriter ("dict.txt"))
{
....
streamWriter.Flush();
}
0
 Аватар для Mikant
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
23.03.2011, 00:41
SandWraith, нет, как раз закрывать файл вручную в .NET - неправильный стиль. я бы даже сказал СовсеМ. почитай в msdn то, что скинул Konctantin
Konctantin, сорри за нетактичность, но Close() вызовет Flush(), а словосочетания "инкапсулировать обработчик (закрытия StreamWriter)" кагбе не существует
0
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
23.03.2011, 08:35
Неправильный и нерекомендуемый - разные вещи, закрыть файл вручную - не ошибка.

Добавлено через 2 минуты
Цитата Сообщение от Mikant Посмотреть сообщение
как раз закрывать файл вручную в .NET - неправильный стиль. я бы даже сказал СовсеМ.
Буду благодарен, если в ссылке Konctantin тыкнете на рекомендацию не закрывать файлы. Ведь Dispose и Close - разные вещи. Я бы даже рискнул сказать, что, в общем случае - не связанные.
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
23.03.2011, 09:01
сорри за нетактичность, но Close() вызовет Flush(),
когда-то у меня была самописная прога, которая складывала SQL-statements в файл, файлы получались огромные, около 100 мб. Так вот этот код:
C#
1
2
3
StreamWriter sw = new StreamWriter(...);
...
sw.Close();
у меня писал не все данные в файл, а обрезал немного.
когда добавил
C#
1
2
3
4
StreamWriter sw = new StreamWriter(...);
...
sw.Flush();
sw.Close();
Возможно это вам покажется не правдоподобным, но сие имело место.

ЗЫ. Я никому ничего не хочу доказывать - каждый использует свою методику, и каждый натыкается на свои грабли.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.03.2011, 09:01
Помогаю со студенческими работами здесь

Что такое файловый поток?
Здравствуйте. Во многих примерах Stream ассоциируют с потоком воды, потоком людей, частиц и т.д. Не могу правильно понять, что это в...

Не закрывается поток созданный в другом классе
Здравствуйте, подскажите пожалуйста как грамотно отключать поток из form,. у меня даже после закрытия формы потоки продолжают слать смски ...

Чем отличается сериализация от обычного чтения/записи в файловый поток?
Собственно, вопрос.

Когда закидую в поток функцию время программа аварийно закрывается
Вот такая ошибка когда нажимаю запустить программу Программа меняет обои рабочего стола по времени который задает пользователь(в сек.),...

Закрывается поток
Добрый день! В программе создаю вспомогательный поток для обработки информации следующим образом: DataProcess1=new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru