Вы не должны использование StreamReader
для двоичных файлов (как gifs или jpgs). StreamReader
для текст данные. Вы будете [почти 119], конечно теряют данные, если Вы используете их для произвольных двоичных данных. (Если Вы используете Кодирование. GetEncoding (28591) Вы, вероятно, будете хорошо, но какой смысл?)
, Почему необходимо использовать StreamReader
вообще? Почему не только сохраняют двоичные данные как [1 110] двоичные данные и записывают его обратно к диску (или SQL) как двоичные данные?
РЕДАКТИРОВАНИЕ: Поскольку это, кажется, что-то, что люди хотят видеть..., если Вы делаете , просто хотят скопировать один поток в другого (например, в файл) используют что-то вроде этого:
///
/// Copies the contents of input to output. Doesn't close either stream.
///
public static void CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[8 * 1024];
int len;
while ( (len = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, len);
}
}
Для использования его для дампа потока в файл, например:
using (Stream file = File.Create(filename))
{
CopyStream(input, file);
}
Примечание, что Stream.CopyTo
был представлен в.NET 4, служа в основном той же цели.
Dispatcher.BeginInvoke
возвращает объект DispatcherOperation
. Если вы сохраните ссылку на него, вы можете использовать его метод Abort
, чтобы вывести операцию из очереди, если она еще не начала выполняться.