powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запись в файл из потока
20 сообщений из 20, страница 1 из 1
Запись в файл из потока
    #39059522
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В многопоточном C#-приложении предусмотрена журнализация. Каждый поток сам открывает файл и пишет в него, причем, довольно активно и много. В коде предусмотрен код (метод Flush), сбрасывающий данные в файл через каждую 1000 записанных строк. Файлы закрываются только когда происходит выход из приложения и потоки освобождают ресурсы, которыми они владели. На Windows 8 (на других пока не проверял) в течение всего времени работы приложения (несколько часов) не видно ни одной записи - то есть имена файлов есть, но в них ноль записей. После завершения приложения (и, соответственно, закрытия файлов) все записи можно прочитать. Я предполагал, что Flush обеспечивает запись данных в файл и их просмотр внешними приложениями без необходимости закрывать файл. Может кто-нибудь пояснить почему так происходит?! То есть это из-за того, что файл открыт в потоке такой эффект или в Windows 8 какая-то особенная буферизация данных перед сбросом на диск?! Просто хотелось бы просматривать логи параллельно работающему приложению.
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39059576
dimkadv2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
myaucha,

На самом деле все происходит правильно, вы создали файл - файл физически записался на дик, поэтому вы его видите, после этого - вы открываете файл для записи и пишите туда данные, но при этом не сохраняете, соответственно, когда вы его открываете "в ручную" - он пуст.

Для аналогии откройте документ вручную, впишите пару строк и откройте его еще раз не закрывая - результат - пустой файл
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39059583
dimkadv2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
myauchaФайлы закрываются только когда происходит выход из приложения и потоки освобождают ресурсы

Лучше закрывайте файлы сразу после записи
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39059597
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myaucha,

нормальный логгер - прикрутите
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39059622
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я проверял в Windows 7, но открывал файл из главного потока. Когда вызывал flush, но файл не закрывал, то все данные, записанные к этому времени, можно было просмотреть, например, через блокнот.

Приложение пишет очень активно, а вы предлагаете после каждой порции данных закрывать и открывать файл?! По моему, это не очень разумно
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39059632
dimkadv2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
myaucha,

А почему нет? Зачем держать все время открытый поток?
А вообще Изопропил прав
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39059644
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myauchaПриложение пишет очень активно, а вы предлагаете после каждой порции данных закрывать и открывать файл?! По моему, это не очень разумноРешение должно основываться не на домыслах, а на результатах тестов.
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39059660
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КmyauchaПриложение пишет очень активно, а вы предлагаете после каждой порции данных закрывать и открывать файл?! По моему, это не очень разумноРешение должно основываться не на домыслах, а на результатах тестов.
Я проверял в Windows 7, но открывал файл из главного потока. Когда вызывал flush, но файл не закрывал, то все данные, записанные к этому времени, можно было просмотреть, например, через блокнот.
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39059671
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myauchaАлексей Кпропущено...
Решение должно основываться не на домыслах, а на результатах тестов.
Я проверял в Windows 7, но открывал файл из главного потока. Когда вызывал flush, но файл не закрывал, то все данные, записанные к этому времени, можно было просмотреть, например, через блокнот. Я не про flush, я про предположение о том, что постоянное закрытие и открытие файла заметно скажется на производительности системы.
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39059893
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myaucha,

какое значение FileShare задано?
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39060277
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилmyaucha,

нормальный логгер - прикрутите

лайкнул!
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39060879
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinnipuhИзопропилmyaucha,

нормальный логгер - прикрутите

лайкнул!
+1
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39060888
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилmyaucha,

нормальный логгер - прикрутите+1

к примеру с Enterprise Library Logger проблемы почитать логи во время работы приложения никогда не возникало :)
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39060929
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-1

Нельзя брать готовое пока сам не научишься.
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39060973
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К-1

Нельзя брать готовое пока сам не научишься.
Алексей, а вы пробовали писать свою операционную систему? Ну хотя бы прототип? Или сразу на готовенькое пришли?
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39060980
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Алексей К-1

Нельзя брать готовое пока сам не научишься.
Алексей, а вы пробовали писать свою операционную систему? Ну хотя бы прототип? Или сразу на готовенькое пришли?Но я знаю, как её написать. Это только вопрос времени.
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39060987
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КArm79пропущено...

Алексей, а вы пробовали писать свою операционную систему? Ну хотя бы прототип? Или сразу на готовенькое пришли?Но я знаю, как её написать. Это только вопрос времени.
Вот и у ТС вопрос времени...
myauchaПосле завершения приложения (и, соответственно, закрытия файлов) все записи можно прочитать. Я предполагал, что Flush обеспечивает запись данных в файл и их просмотр внешними приложениями без необходимости закрывать файл. Может кто-нибудь пояснить почему так происходит?!
Flush по умолчанию делегирует операционке обязанность скинуть изменения на диск. Прямое скидывание, это flush(true)
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39061025
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
к примеру с Enterprise Library Logger проблемы почитать логи во время работы приложения никогда не возникало :)
Эта поделка еще жива?
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39061029
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Алексей, а вы пробовали писать свою операционную систему? Ну хотя бы прототип? Или сразу на готовенькое пришли?
Еще предложи свой проц из транзисторов спаять.
...
Рейтинг: 0 / 0
Запись в файл из потока
    #39061147
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВArm79Алексей, а вы пробовали писать свою операционную систему? Ну хотя бы прототип? Или сразу на готовенькое пришли?
Еще предложи свой проц из транзисторов спаять.
А что, я например, схемотехнику в ВУЗе проходил. Как говорил Алексей, "Но я знаю, как её написать. Это только вопрос времени".
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запись в файл из потока
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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