fcmd icon indicating copy to clipboard operation
fcmd copied to clipboard

Parallel file reading

Open Break-Neck opened this issue 10 years ago • 3 comments

Добавил асинхронное чтение каталогов через новый плагин файловой системы. Включается - выключается через настройку типа Application, сделал по-умолчанию включенной.

Break-Neck avatar Sep 23 '14 17:09 Break-Neck

Добрый вечер. Чем конкретно не устраивает текущий LocalFS-плагин? Вся работа с ним осуществляется в отдельных потоках, инициируемых местом обращения (MainWindow, VE, etc). Благодаря этому, исчезает необходимость в создании асинхронных функций в самих плагинах.

Гораздо значительнее в FC проблема неверной передачи объекта плагина ФС в потоки работы с ним. Туда передаётся ссылка на свойство FS активной на момент начала операции панели, т.е. на объект типа IFSPlugin. Если во время фоновой операции (или открытого VE) сменить ФС в панели, с которой была начата операция, случается полный коллапс. По идее, надо передавать объект плагина по значению, но как это делается в C# найти пока не могу (не хватает опыта).

atauenis avatar Sep 23 '14 18:09 atauenis

В смысле, в отдельных потоках? Там же синхронный код с загрузкой и отрисовкой. Подразумевалось такое использование: при открытии директории можно ее содержимое "поставить на загрузку", а отображать только часть; это должно отлично сочетаться с новым ListView2 -- отображаются 100 первых элементов, а стальные пока загружаются, аналогично работа с сетью.

А в чем текущая проблема? Имеется ввиду, что, если при загужающейся директории попытаться сменить текущую, то все упадет? Я такое никогда не пытался провернуть, но в моей реализации можно убивать текущую загрузку.

Break-Neck avatar Sep 23 '14 18:09 Break-Neck

Точно, в текущей версии каталоги грузятся синхронно. Подзабыл немного. В фоне только действия, при которых выводится окно прогресса (копирование, перемещение, загрузка в VE etc).

atauenis avatar Sep 23 '14 18:09 atauenis