У меня есть метод ФОС, как это для загрузки файлов ломтей:FileStream не закрывается, даже если это в заявлении, используя
public void UploadChunk (RemoteFileChunk file)
{
using (var targetStream = new FileStream("some-path", FileMode.OpenOrCreate, FileAccess.Append, FileShare.None))
{
file.Stream.CopyTo(targetStream);
file.Stream.Close();
}
}
который является довольно основным материалом. Но то, что происходит в исключительном случае, довольно странно. Исключительный случай шаги:
- Начало загрузив кусок
- Сыпучие подключение к Интернету во время загрузки
- методы UploadChunk бросает
CommunicationException
из-за потери соединения Интернет - ... ждать подключения к Интернету, чтобы вернуться
- Начало загрузки последнего фрагмента
- Boom !!! Выдает исключение ниже:
Процесс не может получить доступ к файлу «некоторые альтернативные пути», так как он используется другим процессом.
Я знаю, что файл не тронут кем-либо еще, что приводит меня к тому, что файл остался открытым при последнем вызове, когда соединение потеряно. Но, насколько я знаю, using
заявление должно было закрыть FileStream
, однако в этом случае это не так.
Что мне может не хватать здесь?
Btw, у меня есть еще question, который, как я предполагаю, вызван той же проблемой, о которой я не знаю. Может быть, это может привести вас, ребята, к какой-то подсказке.
потому что ваша оригинальная потоковая операция не выполнена. –
Выполнено ли первоначальное выполнение 'UploadChunk' при повторном попытке? Таймауты сети могут быть длиннее, чем вы ожидаете. – Richard
Предполагаю, что вы столкнулись с исключением. В этом случае вы должны окружить свой код в блоке try-catch-finally и закрыть поток, что бы ни случилось неожиданно. – greenhoorn