текстовый редактор, загружающий несколько больших текстовых файлов - многопоточный - PullRequest
2 голосов
/ 10 июля 2010

Я довольно новичок в VB.NET и работаю над текстовым редактором с интерфейсом с вкладками. Я имею дело с большими текстовыми файлами, поэтому мне интересно, как лучше всего это сделать.

Должен ли я открывать каждую вкладку / текстовый документ в новом потоке или процессе? Я в основном хочу, чтобы все приложение всегда работало быстро, так как текстовый редактор - только одна его часть. Если у меня открыто несколько больших текстовых файлов, я не хочу, чтобы остальные приложения немного замедлялись.

Если кто-то может помочь пролить свет на это и, возможно, указать мне URL-адрес с любыми соответствующими примерами, я был бы признателен за это!

Ответы [ 2 ]

2 голосов
/ 10 июля 2010

Должен ли я открывать каждую вкладку / текстовый документ в новом потоке или процессе?

Нет.Определенно не новый процесс.Количество Win32, чтобы собрать все воедино, заставит вас ненавидеть себя.

Также не новая тема.Интерфейс Winforms работает в одном потоке отправки.Попытка прикоснуться к пользовательскому интерфейсу из разных потоков заставит вашу программу взорваться.

Я бы порекомендовал просто использовать проверенный, верный и скучный подход background worker .Это можно использовать с потоками или просто с помощью асинхронного ввода-вывода (.NET обрабатывает многопоточность за вас).В зависимости от вашего варианта использования вы можете просто загружать части файлов с отложенной загрузкой, вы можете использовать сопоставленные с памятью или файлы с произвольным доступом (например, читать только в очень небольшой части файла)вовремя).В любом случае «данные» должны быть отделены от визуализации упомянутых данных.

(Акцент добавлен в условия поиска.)

1 голос
/ 10 июля 2010

Если у вас открыто 1 или 10 вкладок, вы сможете набирать / редактировать только 1 файл за раз, остальные вкладки будут просто занимать память в структуре данных, которую вы определяете, поэтому не знаете, как это будет.влияние на производительность.

В качестве примечания: если вы выполняете большое количество операций со строками, используйте класс stringbuilder, который намного быстрее и эффективнее использует память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...