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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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