Как сделать анимацию загрузчика, которая выполняется во время выполнения кода? - PullRequest
0 голосов
/ 11 декабря 2011

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

Его нужно использовать только один раз в голубой луне. Но когда это произойдет, пользователь будет ждать около трех секунд.

По-видимому, Microsoft допускает только 2 секунды или менее ожидания. Daaaaang.

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

Я попытался обновить несколько элементов управления, но из-за зависания потока пользовательского интерфейса они не работали.

Я искал, искал и искал, и обнаружил этот , что сбивало с толку и не очень помогало, отчасти из-за версии C7 для WP7 и отчасти из-за того, что я начинающий в C #.

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

Ответы [ 2 ]

2 голосов
/ 11 декабря 2011

Silverlight Toolkit для Windows Phone представляет PerformanceProgressBar, "который использует поток композитора исключительно для анимации, а не поток пользовательского интерфейса (пользовательского интерфейса)", как , описанный в этом WindowsPhone Geekстатья .Это должно помочь вам с пользовательским интерфейсом замораживания.

Что касается параллельного выполнения (предложено Мерлином), я бы предложил метод QueueUserWorkItem для выполнения кода в отдельном потоке над BackgroundWorker оставляя поток пользовательского интерфейса активным для обновлений пользовательского интерфейса, но, как описано в статье, вам нужно будет использовать Dispatcher.BeginInvoke для обновления своего пользовательского интерфейса оттуда.

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

Вы можете попробовать использовать класс BackgroundWorker . На этой странице есть руководство по его использованию.

Смотрите этот вопрос и мой ответ для другого урока. Хотя это не относится к Windows Phone 7, оно все же связано с обновлением пользовательского интерфейса в ожидании завершения задачи:

Вот специальное руководство по Windows Phone 7 для использования BackgroundWorker:

...