Происходит следующее: файл читается и помещается в RichTextBox, который затем осуществляется навигация - не беспокойтесь об этой части.
Разработчик, написавший исходный код, просто использует StreamReader и делает
Код: Выделить всё
[Reader].ReadToEnd()
Моя задача — разобрать этот фрагмент кода, прочитайте его частями в буфер и отобразите индикатор выполнения с возможностью отмены.
Некоторые предположения:
- Большинство файлов имеют размер 30–40 МБ.
- Содержимое файла является текстовым (не двоичным), некоторые имеют формат Unix, некоторые — DOS.
После того, как содержимое получено, мы определяем, какой терминатор используется. - Никого не волнует время, необходимое для рендеринга в richtextbox после загрузки. Это всего лишь первоначальная загрузка текста.
< ul>
[*]Могу ли я просто использовать StreamReader, затем проверить свойство длины (то есть ProgressMax) и выполнить чтение для заданного размера буфера и выполнить итерацию в цикле while WHILST внутри фоновый рабочий, поэтому он не блокирует основной поток пользовательского интерфейса? Затем верните построитель строк в основной поток после его завершения.
[*]Содержимое будет передано в StringBuilder. могу ли я инициализировать StringBuilder с размером потока, если длина доступна?
Это (по вашему профессиональному мнению) хорошие идеи ? Раньше у меня возникало несколько проблем с чтением контента из Streams, потому что при этом всегда пропускались последние несколько байтов или что-то в этом роде, но если это так, я задам еще один вопрос.
Подробнее здесь: https://stackoverflow.com/questions/216 ... in-c-sharp
Мобильная версия