Скрыть мобильное приложение windows вместо закрытия

У меня есть мобильное приложение для Windows, которое должно работать, чтобы выполнять какие-то задачи в фоновом режиме.

Скрыть приложение вместо закрытия было несложно:

protected override void OnClosing(CancelEventArgs e)
{
  e.Cancel = true;
  this.Hide();
  base.OnClosing(e);
}

Проблема: как мне снова показать приложение, когда пользователь запускает его в меню?
Windows Mobile знает, что приложение все еще работает, поэтому не запускает вторую копию. Вместо этого он просто ничего не делает.

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


person Sam    schedule 29.01.2010    source источник


Ответы (1)


Вы должны использовать это:

protected override void OnClosing(CancelEventArgs e) {
  if ( false == this.CanClose ) { // you should check, if form can be closed - in some cases you want the close application, right ;)?
    e.Cancel = true; // for event listeners know, the close is canceled
  }
  base.OnClosing(e);
  if ( false == this.CanClose ) {
    e.Cancel = true; // if some event listener change the "Cancel" property
    this.Minimize();
  }
}

Метод «Свернуть» должен выглядеть так, как в этом сообщении в блоге (http://christian-helle.blogspot.com/2007/06/programmatically-minimize-application.html).

person TcKs    schedule 29.01.2010
comment
Ах да, это работает - единственный недостаток: программа постоянно отображается в списке задач. Я бы предпочел, чтобы он был спрятан, когда пользователь захочет его закрыть. - person Sam; 29.01.2010
comment
Не думаю, что приложение должно скрываться из списка задач. Mabe лучший способ для вашей цели - разделить приложение на службу (которая будет запускаться в фоновом режиме без возможности закрыть ее) и приложение с графическим интерфейсом для управления настройками (и т. Д.), Которые могут связываться со службой и можно закрыть. - person TcKs; 29.01.2010
comment
Я если вы хотите, чтобы он не отображался в списке «Выполняемые программы» на этом этапе, просто установите для заголовка формы пустую строку, когда вы его скрываете. Когда он вернется на передний план, снова установите заголовок. - person ctacke; 29.01.2010
comment
Есть ли способ создать скрытую форму? Я хочу запустить свое приложение при запуске устройства, но оно продолжает показывать форму. Было бы здорово, если бы я мог создать форму, но не показывать ее (как если бы она была скрыта с использованием вашего подхода). - person Sam; 02.02.2010
comment
Я могу иметь приложение без создания какой-либо формы. Вы можете создать форму по запросу или никогда. Впрочем, какой смысл в приложении без UI? Если вы хотите запустить какой-то код, скрытый от пользователя, вам следует использовать эту службу. Если вы хотите, чтобы пользователь мог управлять службой, вы должны создать отдельное приложение с пользовательским интерфейсом, которое может взаимодействовать со службой: ищите межпроцессное взаимодействие IPC. - person TcKs; 02.02.2010