Отмените BeginInvoke в WPF

Вы не должны использование 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, служа в основном той же цели.

5
задан Ghassan Karwchan 28 July 2009 в 00:30
поделиться

1 ответ

Dispatcher.BeginInvoke возвращает объект DispatcherOperation . Если вы сохраните ссылку на него, вы можете использовать его метод Abort , чтобы вывести операцию из очереди, если она еще не начала выполняться.

9
ответ дан 14 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: