Главная » Silverlight » Отслеживание состояния приложения

0

По сравнению с обычными приложениями Silverlight, приложения вне браузера со­держат дополнительную информацию в манифесте. Благодаря ей пользователь получа­ет возможность установить приложение локально, однако это не мешает пользователю при желании выполнять приложение в браузере. Такая гибкость в большинстве случа­ев полезна, однако в некоторых ситуациях она приводит к тому, что разработчик дол­жен учитывать, как выполняется приложение: в браузере или в отдельном окне. Иногда желательно предоставить в браузере меньше возможностей или вообще запретить вы­полнение в браузере.

Выяснить, в каком режиме выполняется приложение, можно с помощью свойства

Application. IsRunningOutOfBrowser. Оно равно true, если приложение выполняется

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

Например, чтобы создать приложение, работающее только вне браузера, можно при­менить обработчик события Startup.

private void Application_Startup(object sender,

StartupEventArgs e)

{

if (Application.Current.IsRunningOutOfBrowser) {

// Вывод полного интерфейса this.RootVisual = new MainPageO;

}

else {

// Вывод окна установки

this.RootVisual = new InstallPage ();

}

}

Совет. Важно также проверить значение свойства isRunningOutOfBrowser перед любой попыткой использовать средства, не поддерживаемые приложениями вне браузера, а именно — средства взаимодействия с браузером (см. главу 14).

Приведенный выше код извлекает свойство IsRunningOutOfBrowser и применяет его для принятия решения, запустить ли процесс установки. Если приложение в данный момент выполняется не в браузере (IsRunningOutOfBrowser равно true), значит, оно уже установлено. Однако обратное не обязательно верно. Если приложение выполня­ется в браузере (IsRunningOutOfBrowser равно false), оно может быть как установлено, так и не установлено. В этом случае проверить, установлено ли приложение, мож­но с помощью свойства Application. InstallState, которое содержит перечисление InstallState (см. табл. 6.2).

Таблица 6.2. Элементы перечисления InstallState

Значение

Описание

Notlnstalled

Приложение выполняется в браузере и не было установлено

Installing

В данный момент приложение устанавливается

InstallFailed

Процесс установки завершился неудачей

Installed

Приложение установлено; это не обязательно означает, что оно в данный

момент выполняется вне браузера; чтобы проверить это, нужно извлечь

СВОЙСТВО IsRunningOutOfBrowser

Страница InstallPage учитывает все указанные факторы. При загрузке страницы код конструктора выясняет, установлено ли приложение. Если нет, код делает доступ­ной кнопку установки. В противном случае код затеняет кнопку установки и выводит приглашение запустить установленное приложение с помощью ярлыка.

public InstallPage () – {

InitializeComponent();

if (Application.Current.InstallState ==

InstallState.Installed)

{

lblMessage.Text = "Приложение установлено. " + "Выполнять его в браузере нельзя. " + "Для запуска используйте ярлык на рабочем столе."; cmdlnstall.IsEnabled = false;

)

else {

lblMessage.Text =

"Необходимо установить приложение."; cmdlnstall.IsEnabled = true;

)

}

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

Когда приложение установлено, рекомендуется сообщить об этом пользователю. Однако учитывайте, что нельзя считать приложение успешно установленным лишь по­тому, что метод Install () возвратил значение true. Оно указывает лишь на то, что пользователь щелкнул на кнопке О К в инсталляционном окне, чтобы запустить про­цедуру установки. Процесс установки выполняется асинхронно. Это означает, что он может продолжаться после завершения процедуры Install (), а за это время всякое может случиться.

В процессе установки надстройка Silverlight изменяет свойство Application. InstallState и генерирует событие Application.InstallStateChanged, чтобы со­общить об изменении. В момент генерации события instellStateChanged свойство InstallState принимает значение Installed. В этот момент нужно сообщить пользо­вателю об успешной установке с помощью кода в классе Арр.

Сначала нужно в конструкторе класса Арр подключить обработчик события.

this.InstallStateChanged +=

this.Application_InstallStateChanged;

Затем необходимо добавить код, реагирующий на завершение установки и сообща­ющий об этом странице InstallPage.

private void Application_InstallStateChanged(object sender,

EventArgs e)

{

InstallPage page = this.RootVisual as InstallPage;

if (page != null) {

// Приказ корневой странице вывести сообщение

switch (this.InstallState) {

case InstallState.InstallFailed: page.DisplayFailed(); break;

case InstallState.Installed: page.Displaylnstalled(); break;

}

}

}

И наконец, нужно добавить в класс InstallPage методы, выводящие обновленный текст сообщения.

public void DisplaylnstalledO

{

lblMessage.Text = "Приложение установлено и выполняется. Можете закрыть эту страницу.";

}

public void DisplayFailedO

lblMessage.Text = "Установка завершена неуспешно.";

cmdlnstall.IsEnabled = true;

}

В данном примере информационный текст выводится в первом экземпляре прило­жения, предназначенном для выполнения в браузере. Текст сообщает о том, что поль­зователь может закрыть браузер (рис. 6.10). Можно сделать иначе: программно закрыть окно браузера с помощью кода JavaScript и средств взаимодействия Silverlight с брау­зером (см. главу 14).

Надстройка Silverlight с помощью события InstallStateChanged извещает о завер­шении процесса установки (успешном или неуспешном), однако при удалении приложе­ния, как описано в следующем разделе, событие InstallStateChanged не генерируется.

Рис. 6.10. Использование приложения, выполняемого в бразеуре, для установки приложения, выполняемого вне браузера

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии