Область применения страниц в приложении Silverlight - PullRequest
1 голос
/ 24 декабря 2009

У меня есть приложение, созданное с помощью шаблона приложения Silverlight Navigation.

У меня есть основная форма (например, MainPage.xaml) и несколько страниц Silverlight, которые меняются местами и выходят из основной области содержимого.

В MainPage.xaml у меня есть DispatcherTimer, который обращается к некоторым ресурсам Uri, независимо от того, на какой странице я нахожусь. Время от времени он необъяснимо прекращает стрелять.

У меня есть подозрение, что это связано с объемом различных страниц. Могут ли страницы внутри MainPage.xaml отнять область видимости у ее родителя?

Или это намного проще?

1 Ответ

2 голосов
/ 29 декабря 2009

Гораздо проще, если вы используете DispatcherTimer, который работает в потоке Dispatcher (xaml), который является потоком, используемым для создания пользовательского интерфейса, тогда таймер не будет срабатывать, когда он блокируется другим действие выполняется в том же потоке.

Это действие может быть предыдущим вызовом WebGet (маловероятно, поскольку это будут асинхронные вызовы) или более вероятно, что то, что вы делаете с возвращаемыми значениями, может занять много времени, или некоторым страницам может потребоваться больше времени, чем другим, чтобы создать свой пользовательский интерфейс content, следовательно, событие Dispatcher может попасть в очередь и сработать, когда поток свободен.

Я предлагаю вам следовать архитектурному стилю MVVM при создании приложений Silverlight, выполняя это, вы можете запускать вызовы по таймеру и WebGet из вашей ViewModel, которая выполняется в другом потоке, который не зависит от пользовательского интерфейса, следовательно, не зависит от перехода стр.

...