fcmd
fcmd copied to clipboard
Parallel file reading
Добавил асинхронное чтение каталогов через новый плагин файловой системы. Включается - выключается через настройку типа Application, сделал по-умолчанию включенной.
Добрый вечер. Чем конкретно не устраивает текущий LocalFS-плагин? Вся работа с ним осуществляется в отдельных потоках, инициируемых местом обращения (MainWindow, VE, etc). Благодаря этому, исчезает необходимость в создании асинхронных функций в самих плагинах.
Гораздо значительнее в FC проблема неверной передачи объекта плагина ФС в потоки работы с ним. Туда передаётся ссылка на свойство FS активной на момент начала операции панели, т.е. на объект типа IFSPlugin. Если во время фоновой операции (или открытого VE) сменить ФС в панели, с которой была начата операция, случается полный коллапс. По идее, надо передавать объект плагина по значению, но как это делается в C# найти пока не могу (не хватает опыта).
В смысле, в отдельных потоках? Там же синхронный код с загрузкой и отрисовкой. Подразумевалось такое использование: при открытии директории можно ее содержимое "поставить на загрузку", а отображать только часть; это должно отлично сочетаться с новым ListView2 -- отображаются 100 первых элементов, а стальные пока загружаются, аналогично работа с сетью.
А в чем текущая проблема? Имеется ввиду, что, если при загужающейся директории попытаться сменить текущую, то все упадет? Я такое никогда не пытался провернуть, но в моей реализации можно убивать текущую загрузку.
Точно, в текущей версии каталоги грузятся синхронно. Подзабыл немного. В фоне только действия, при которых выводится окно прогресса (копирование, перемещение, загрузка в VE etc).