C# 隐藏windows mobile应用程序而不是关闭

C# 隐藏windows mobile应用程序而不是关闭,c#,windows-mobile,hide,C#,Windows Mobile,Hide,我有一个windows mobile应用程序,它需要继续运行才能在后台执行一些任务 隐藏应用程序而不是关闭应用程序很容易: protected override void OnClosing(CancelEventArgs e) { e.Cancel = true; this.Hide(); base.OnClosing(e); } 问题:当用户在菜单中启动应用程序时,如何再次显示该应用程序? Windows Mobile确实知道该应用程序仍在运行,因此它不会启动第二个副本。相反,

我有一个windows mobile应用程序,它需要继续运行才能在后台执行一些任务

隐藏应用程序而不是关闭应用程序很容易:

protected override void OnClosing(CancelEventArgs e)
{
  e.Cancel = true;
  this.Hide();
  base.OnClosing(e);
}
问题:当用户在菜单中启动应用程序时,如何再次显示该应用程序?
Windows Mobile确实知道该应用程序仍在运行,因此它不会启动第二个副本。相反,它什么也不做

如果应用程序再次启动,是否有办法获得通知,以便应用程序可以显示其gui?

您应该使用以下方法:

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();
  }
}

“最小化”方法应该与本文()中的类似。

啊,是的,这是有效的-唯一的缺陷:程序在任务列表中始终可见。我宁愿在用户想要关闭它时将其隐藏起来。我不认为应用程序应该隐藏在任务列表之外。可能实现目标的更好方法是将应用程序拆分为服务(将在后台运行,用户无法关闭它)和带有GUI的应用程序,用于控制设置(等),这些设置可以与服务通信,并且可以关闭。请注意,此时您不希望它出现在“运行程序”列表中,隐藏表单标题时,只需将其设置为空字符串即可。当它回到前面时,再次设置标题。有没有办法创建一个隐藏的表单?我想在设备启动时启动我的应用程序,但它会一直显示表单。如果我可以创建表单,但不显示它(就像使用您的方法隐藏它一样),那就太好了。我可以在不创建任何表单的情况下创建应用程序。您可以根据需要删除表单,也可以从不删除表单。然而,没有UI的应用程序有什么意义?如果您想运行一些对用户隐藏的代码,您应该使用该服务。如果您想让用户能够控制服务,您应该创建一个单独的应用程序,该应用程序具有能够与服务通信的UI:查找IPC-进程间通信。