【问题标题】:How do I have my WPF application to be running as a service in C#?如何让我的 WPF 应用程序在 C# 中作为服务运行?
【发布时间】:2011-08-07 01:10:55
【问题描述】:

我有一个 WPF 应用程序,我想让它作为服务运行,我该如何在 C# 中执行它?

【问题讨论】:

  • 我很困惑。 WPF 是一种用户界面技术,服务通常没有用户交互。
  • 是的;事实上,服务制作是为了避免用户交互。
  • 您是否只想让您的应用程序在启动时运行?
  • 在启动时很好地运行它现在也很好

标签: c# wpf architecture windows-services desktop-application


【解决方案1】:

编辑(基于评论)

如果您想让程序在启动时运行,最简单的方法是更改​​设置以在以下目录中创建应用程序输出 (exe) 的快捷方式:

WIN 7:C:\ProgramData\Microsoft\Windows\开始菜单\程序\启动
XP:C:\Documents and Settings\所有用户\开始菜单\程序\启动

原文解释

鉴于 WPF 应用程序是基于 UI 的应用程序而 Windows 服务不是,您必须从应用程序中取出与用户的所有交互,然后基本上将其重新创建为服务。

鉴于他们被要求做两件完全不同的事情,因此没有简单的 1 步过程来做到这一点。

服务位于后台并执行不需要用户输入的任务,并且在大多数情况下除了配置文件外不与用户交互;即使您可以运行该服务以与桌面交互,但它的工作方式与普通 wpf 程序完全不同。

手下的 Wpf 程序(顾名思义的演示部分)用于与用户交互。

为什么要将它作为服务运行?服务的全部意义在于以最少的用户交互在后台运行。

【讨论】:

  • 我正在设计一个将所有正在运行的应用程序发布到网站的应用程序
  • 这听起来就像一个服务,有时最好先创建一个普通的应用程序,因为调试服务是一项艰巨的任务......尽管按照我上面所说的去做(原始答案)。创建一个新的服务项目(网络上的大量教程,如果这是您的第一个服务,请逐步按照它们进行操作),添加一个应用程序配置文件,该文件将保留所有随时间变化的设置,并且 bob 是你的叔叔
【解决方案2】:

将您的应用分为两部分;

  1. 在后台运行的 Windows 服务应用 (可能在 dtartup 自动运行。并在系统帐户上运行)。

  2. 一个用户交互应用程序,与.and 控件进行通信 Windows 服务。

考虑使用 WCF 在两者之间进行通信。

如果您想更好地理解这一点,请阅读 SOA(面向服务的架构)。

【讨论】:

  • 要自动运行您的应用程序,请使用注册表 LU 或 M \ Software \ Microsoft \ Windows \ CurrentVersion \ Run 或按照其他答案中的建议,使用 StartMenu 中的 StartUp 文件夹。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-12
  • 2018-12-23
  • 1970-01-01
相关资源
最近更新 更多