具有用户界面并发症的服务

时间:2011-04-08 11:19:04

标签: c# winforms windows-services

在有人告诉我之前 - 我知道这个问题的常见障碍,特别是对于Windows 7等。您无法轻松创建服务应用程序并在其中包含用户界面。

然而,事实仍然是,某些应用程序做了一些看起来很可疑的事情。以病毒杀手为例。大多数都有服务组件,通常是某种驱动程序组件和用户界面。用户界面会告诉您何时有病毒。

那很好。我有一项服务可以进行一些数据处理,可能需要提醒用户数据有问题。我正在使用WCF,因此我编写的服务可以与我编写的Windows窗体应用程序进行通信。当服务告诉它时,Forms应用程序会弹出一个通知区域气球。

但是如果用户关闭表单应用程序会发生什么?让我回到病毒杀手类比。如果用户关闭防病毒软件的UI部分会发生什么?如果检测到病毒,防病毒是否会停止通知用户?我无法相信这种情况。

我想知道的是 - 有一种方法可以让我的表单应用程序重新启动,如果用户关闭它,无论是偶然还是故意?我脑子里想出了两种方法。

  1. 让另一个应用程序检查表单应用程序是否正在运行。但如果两者都关闭怎么办?另一个检查状态的应用程序?另一个检查状态?我想不是:)

  2. 让服务检查会话并在交互登录用户的适当会话中启动Forms应用程序。不可靠的。如果它是终端服务器怎么办?

  3. 这不是一个巨大的障碍。如果用户关闭表单应用程序,那么如果他们没有获得数据处理警报,那么这是他们自己的错误。但我想尽我所能阻止他们搞乱一切。

    那么,有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为你已经做得够了,说实话。你永远不能阻止用户搞砸。如果他们关闭您的用户界面,他们就不会收到警报。这应该是显而易见的。如果您确实想要重新启动您的流程,请继续使用您的第二个想法,让服务在适当的会话下启动您的UI应用程序。这并不难,谷歌会给你一些答案。如果您担心终端服务,请使用Cassia查询正在运行的会话。