приложение перестает отвечать на запросы во время листинга каталога в flex 3 - PullRequest
0 голосов
/ 11 июня 2011

Я разработал приложение AIR, которое отображает список со всеми текстовыми файлами, расположенными в каталоге C: \.Я использовал следующий код:

var videoListsArr:ArrayList = new ArrayList();
var folder:File = new File(driveName+":\\");
folder.getDirectoryListingAsync();
folder.addEventListener( FileListEvent.DIRECTORY_LISTING, handleDirectoryListing );
private function handleDirectoryListing( event:FileListEvent ):void
{       
    for each(var item:File in event.files)
    {               
        var itemExtn:String = (item.extension != null) ? item.extension.toLocaleLowerCase() : null;
        if(item.isDirectory)
        {               
            item.getDirectoryListingAsync();
            item.addEventListener( FileListEvent.DIRECTORY_LISTING, handleDirectoryListing );
        } 
        else if(!item.isSymbolicLink && itemExtn != null)
        {       
            if(itemExtn == "txt")
                videoListsArr.addItem(txt); 
        }
    }   
}

Эта функция работает нормально, но выполняется, приложение зависает и перестает отвечать на запросы.Подскажите пожалуйста, как решить эту проблему, чтобы он отображал список txt-файлов, не делая приложение не отвечающим на запросы?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2012

Я использую таймер, чтобы прервать обработку. Мой таймер подклассов Таймер для добавления файлов: Массив и каталоги: Массив.

Первоначальный обработчик, который обработал каталог верхнего уровня (в моем случае loadDirectoryHandler ) загружает файлы timer. со всеми файлами, которые он не может обработать сразу, а также со всеми подкаталогами,

В каждом цикле с помощью обработчика TIMER он нарезает кусок массива файлов (например, 200 файлов), обрабатывает его, а затем запускает таймер, если они еще остались, чтобы они обрабатывались при следующем событии TIMER.

Для каждого каталога требуется объект File и

file.addEventListener (FileListEvent.DIRECTORY_LISTING, loadDirectoryHandler); file.getDirectoryListingAsync ();

Приветствия

0 голосов
/ 11 июня 2011

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

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