很多人这样设计Windows Service,希望在某种条件下,比如某个事件发生后,希望Windows Service弹出一个窗体!
其实这非常不正确,不管是C#,VB.net还是C++创建的Windows Service是被OS windows子系统调用的和维护的,
恰恰它没有桌面站,OS在启动Windows子系统的时候,会默认创建两类东西,就是有窗口站的桌面(其实也是一个窗口以及窗口树结构),另外一个就是无窗口站的环境,Windows Service恰恰运行在这个环境中,其含义是没有客户操作区的表面,那么即使你在Windows Service的OnStart方法中new一个Window对象并调用其Show方法,你也看不到有窗体弹出!
但是你可以使用一个办法绕过这个限制,那就是使用Windows Service作为服务器端,做一个WCF/Remoting服务,
让一个独立进程(最好系统一起启动的)作为客户端,使用双向回调实现的观察者模式(可以使用委托实现,或者WCF就支持回调的方式,不过需要绑定也支持两个通道,并且回调的行为必须是OneWay的),服务在某个条件下通知被注册的客户端,此时客户端程序就可以有所动作,因为一个exe程序(Console等等)是在有窗口站的环境下运行的,那么它们在接收到服务器通知后就可以弹出一个可以看见的窗体了。
分享到:
相关推荐
**二、.NET Windows Service开发步骤** 1. **创建服务类**:在Visual Studio中新建项目,选择“Windows Service”模板。这会自动生成一个继承自`ServiceBase`的类,如`MyService.cs`。 2. **定义服务行为**:重写`...
本资源"**C#开发WindowsService程序源码加文档.pdf**"聚焦于使用C#语言编写Windows服务的实践教程,包含源码与详细文档,对于想要深入理解和开发此类应用的开发者来说,是一份非常有价值的参考资料。 首先,我们来...
通过这个“C# Windows Service 开发示例程序”,你将能够了解到如何创建、安装、启动、停止和管理一个简单的Windows Service,并为更复杂的系统集成和自动化任务打下基础。结合提供的视频教程,你可以更加深入地理解...
在提供的压缩包文件"WindowsService1"中,可能包含了一个示例项目的源代码,展示了如何实现上述步骤。通过查看和学习这个项目,你可以更深入地理解Windows Service的创建过程,以及如何在实际应用中使用它们。记得在...
首先,我们需要创建一个新的C#项目,并选择“安装”类库模板,这将为我们生成一个基础的Windows Service结构。关键的类是`ServiceBase`,它是所有Windows服务的基类。你需要继承这个类并添加自定义逻辑。以下是一个...
创建一个Windows Service主要涉及以下步骤: 1. **创建服务类**:继承自ServiceBase类,实现OnStart和OnStop方法,分别定义服务启动和停止时的逻辑。 2. **注册服务**:使用InstallUtil工具或代码方式将服务安装到...
在本文中,我们将深入探讨如何使用C#编程语言创建一个简单的Windows Service服务。Windows Service是一种在后台运行的应用程序,它们不依赖用户界面,通常用于执行周期性任务或提供系统级功能。C#提供了System....
使用Visual Studio等集成开发环境(IDE),我们可以创建一个Windows Service项目,然后通过编写C#代码来实现服务的具体功能。 ### 开发Windows Service程序的步骤 开发Windows Service程序主要包含以下几个步骤: 1...
总的来说,学习和使用这个“Windows Service服务程序框架”项目,不仅可以帮助你掌握C++编写Windows Service的基础知识,还能加深对系统级编程和Windows API的理解。这将对你的系统管理和软件开发工作大有裨益。通过...
**Windows Service Wrapper ...总之,Windows Service Wrapper 1.9 提供了一个轻量级且灵活的解决方案,将非服务应用程序轻松转换为Windows服务,这对于开发和运维人员来说,极大地简化了对后台应用程序的管理和监控。
- 创建一个Windows Service项目(如本示例中的WindowsService1)。 - 在服务类中,使用`System.ServiceProcess.ServiceBase`基类并重写其OnStart方法。 - 在OnStart方法中,实例化WCF ServiceHost,提供服务类型...
ServiceBase类是System.ServiceProcess命名空间中的一个关键类,它是所有Windows服务类的基类。ServiceBase类提供了与服务控制管理器通信所需的标准入口点,如OnStart和OnStop等方法。 #### 4. Windows服务编程 ...
Qt是一个跨平台的应用程序开发框架,它支持多种操作系统,包括Windows。 标题"基于Qt的window service服务封装"指的是开发者使用Qt库对Windows Service进行了一次封装,使得在Qt环境中创建、控制和管理服务变得更加...
4. 打开命令提示符,使用管理员权限运行,然后输入`installutil.exe [服务可执行文件路径]`,例如`installutil.exe WindowsService1.exe`。 **调试Windows服务** 1. 右键点击服务项目,选择"属性"。 2. 在"启动动作...
对于开发者来说,使用Python来开发Windows服务程序是一个不错的选择。然而,由于Python本身并不直接支持Windows服务,因此需要借助于第三方库`pywin32`来实现这一功能。本文将详细介绍如何使用Python结合`pywin32`来...
本实例将引导你创建一个简单的C# Windows服务,并介绍如何安装和配置该服务。 1. **创建Windows服务项目** 在Visual Studio 2010中,通过以下步骤创建一个新的Windows服务项目: - 打开Visual Studio,点击“文件...
本示例是关于如何使用Visual Studio 2010(VS2010)创建一个Windows Service,并且封装成带有卸载功能的安装包,确保服务安装后能自动启动。 1. **创建Windows Service** - 打开VS2010,新建一个“Windows服务”...
总的来说,"Visual Studio 2008开发Windows Service demo视频"将是一个宝贵的资源,它可以帮助开发者掌握创建后台服务的关键步骤,从而实现自动化任务、持久化的数据处理或其他需要在系统启动时运行的功能。...
Windows服务包装器(Windows Service Wrapper)是一个实用工具,主要用于将任何可执行文件转换为Windows服务。这个工具在标题中提到的版本是2.1.2,它允许开发者或系统管理员轻松地将应用程序作为后台服务运行,即使...