Мне нужно передать поток паре функций в другом классе, но он выдает ошибку
Не удается получить доступ к закрытому потоку
Вот код:
первый метод:
Здесь он открывает файл с помощью метода File.Open, а затем создает объект memorystream и копирует FileStream в MemoryStream. затем устанавливает Position в 0 (я установил position в 0, потому что я был в решении, но не помог). Затем он создает объект класса DocxConvert
и вызывает метод Converto
, передавая ему MemoryStream.
using (var stream = File.Open(tempPath2, FileMode.Open))
{
using(var ms = new MemoryStream())
{
stream.CopyTo(ms);
ms.Position = 0;
using (var docx = new DocxConvert())
{
return docx.Converto(ms);
}
}
}
Класс докксконверт:
Он принимает поток, а затем вызывает метод copyStream
, передавая принятый поток.
Метод copyStream в классе DocxConvert: он должен копировать принятый поток в другой поток с именем _memoryStream
, который является свойством класса.
public class DocxConvert
{
private MemoryStream _memoryStream = new MemoryStream();
public bool Converto(Stream stream)
{
try
{
copyStream(stream);
//more code
}
catch (IOException ex)
{
Debug.WriteLine(ex);
}
return true;
}
private void copyStream(Stream stream)
{
stream.CopyTo(_memoryStream); //here it throws the error
}
}
пс. Я ищу эту ошибку здесь перед публикацией, но ни одна из тем мне не помогла.
РЕШЕНО путем перезагрузки ПК, код в порядке.
_memoryStream
не открыт во время ошибки. - person 500 - Internal Server Error   schedule 05.10.2018Convertto
, отличается от_memoryStream
? Откуда_memoryStream
? - person Llama   schedule 05.10.2018stream.Position = 0
до этогоstream.CopyTo()
, и в этой строке возникала ошибка, что означает, чтоstream
по определенной причине не открыт - person Ertan Hasani   schedule 05.10.2018copyStream
, где он пытается скопировать этот принятый поток в свойство класса. Проверьте обновленный код сейчас - person Ertan Hasani   schedule 05.10.2018