Я использую классы FileStream и StreamReader примерно так:
using(FileStream stream = File.Open(filePath,FileMode.Open,FileAccess.Read,FileShare.ReadWrite))
{
using(var reader = new StreamReader(stream))
{
content = reader.ReadToEnd();
}
}
Это означает, что я избавляюсь от них обоих.
Однако, запустив другое приложение, я обнаружил, что есть некоторая блокировка, оставшаяся от файла, который я читаю.
Как и в случае с Dispose, я должен также вызывать Finalize или Close?
ура!
ОБНОВЛЕНИЕ - Почему я думаю, что происходит блокировка:
У меня есть служба, которая записывает в некоторые файлы журнала.
Приведенный выше код взят из другого приложения WCF, которое читает журналы.
У меня также есть проект автоматического развертывания, который останавливает основную службу, создает резервные копии файлов, добавляет новую версию службы и запускает ее снова.
если служба WCF работает (которая содержит приведенный выше код), я получаю исключения ввода-вывода при запуске приложения развертывания, даже если основная служба уже остановлена (служба, которая записывает в журналы).
Когда служба WCF не запущена, я не получаю никаких исключений ввода-вывода и могу безопасно перемещать файлы.
Единственный ввод-вывод, который выполняет WCF, выше ... так что я предполагаю, что он где-то хранит какую-то блокировку ..?