Мое приложение имеет регистратор, который постоянно записывает данные в различные файлы. Регистрация в каждом файле выполняется синхронно с использованием объекта StreamWriter внутри блока «using». Время от времени я получаю исключение о том, что файл, который я пытаюсь открыть, используется другим процессом.
Теперь файлы, в которые я вхожу, имеют уникальное имя, связанное с идентификатором клиента. Мое приложение является многопоточным, но в любой момент времени активен только 1 экземпляр клиента, поэтому я уверен, что один и тот же файл не открывается более чем одним потоком. Однако мое приложение регистрирует один и тот же файл несколько раз, скажем, менее чем за 1 секунду, при каждом повторном открытии файла. Это оставляет меня к другому выводу, что оператор «using» не сразу закрывает файл (даже если я читал, что он делает для файлов), а только удаляет его и ждет, пока GC обработает закрытие.
Правильно ли сделан мой вывод или что-то еще вызывает исключение?