прогресс загрузки длинного цикла в flex - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть цикл, который анализирует и работает с большим количеством данных, и это занимает много времени. Пока он работает, на экране ничего нет, и мне интересно, есть ли способ поставить загрузчик или противостоять?

Поскольку он выполняет ограниченный объем работы, я подумал, что могу просто обновить прогресс из цикла, но дальнейшие чтения показали, что это было невозможно.

Есть идеи? Спасибо

Ответы [ 3 ]

7 голосов
/ 02 декабря 2011

Первым шагом было бы превратить ваш процесс в чанки, которые будут завершаться достаточно быстро, чтобы поддерживать отзывчивость вашего приложения.

Затем запустите таймер, который работает максимально быстро.На каждом событии TIMER выполните как можно больше кусков, находясь под определенным порогом.Это замедлит весь процесс, поэтому вы хотите, чтобы порог был как можно выше.

Вы можете проверить мой класс AsyncSWFModifier для рабочего примера.Это базовый класс, который я расширяю, переопределяя метод run.Я не буду вставлять это здесь, потому что в этом классе есть некоторые не относящиеся к делу детали.

1 голос
/ 02 декабря 2011

Эти ответы верны, основная проблема в том, что Flash Player является однопоточным.

0 голосов
/ 02 декабря 2011

Сделайте ваши переменные приватными (вне области метода), сделайте несколько таймеров для запуска метода, и вы получите некоторую псевдопоточность, которая не заблокирует ваш пользовательский интерфейс.

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