一个C#程序咋做成服务

问题描述

一个C#程序做成服务,一开机该程序即在后台运行

解决方案

解决方案二:
创建windows服务项目,代码和winform里基本一样,就是没有界面你可以创建一个winform项目进行调试使用InstallUtil命令安装服务,或者创建安装包安装
解决方案三:
网上也有将exe打成服务的工具
解决方案四:
1、写成exe程序。2、在exe同级目录下,新建一个bat文件,写上:C:WINDOWSMicrosoft.NETFrameworkv2.0.50727installutil.exeE:/...../XXXX.exepause

双击bat文件,执行,然后再windows服务上设置,开机自启
解决方案五:
1.创建服务项目;2.安装服务。例子大把网上搜索就好,如果好不明白最好找本书看。网上东西有时候比较乱,然后原文未必也对,然后又被人转载。
解决方案六:
你可以新建一个windows服务的项目,然后windows服务的文件,具体操作可以参考http://www.cr173.com/html/15350_1.html应该很详细了!最后可以通过.net下installutil.exe指令安装其他程序可以通过AssemblyInstaller进行安装,ServiceController进行控制
解决方案七:
VisualStudio标准版中不提供“Windows服务”模板及相关功能。本主题中的步骤演示如何创建一个简单的Windows服务应用程序,以便向事件日志中写入消息。创建和使用服务所执行的基本步骤包括:使用“Windows服务”应用程序模板创建项目。此模板为您创建一个从ServiceBase继承的类,并编写大量基本服务代码,例如启动服务的代码。编写OnStart和OnStop过程的代码,并重写要重新定义的任何其他方法。添加服务应用程序所必需的安装程序。默认情况下,当单击“添加安装程序”链接时,会将一个包含两个或多个安装程序的类添加到应用程序中:一个程序用于安装进程,其他每个安装程序用于项目包含的每个关联服务。生成您的项目。创建安装项目以安装服务,然后进行安装。访问Windows2000服务控制管理器并启动您的服务。首先,创建项目并设置服务正常运行所必需的值。说明:对于在以下说明中使用的某些VisualStudio用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您使用的VisualStudio版本及设置。有关更多信息,请参见VisualStudio设置。创建服务创建并配置服务在“文件”菜单上单击“新建项目”。打开“新建项目”对话框。在VisualBasic、VisualC#、VisualC++或VisualJ#项目模板的列表中选择“Windows服务”项目,并将其命名为MyNewService。单击“确定”。说明:项目模板自动添加从System.ServiceProcess..::.ServiceBase继承的名为Service1的组件类。单击设计器选择Service1。然后,在“属性”窗口中,将Service1的ServiceName和“(名称)”属性设置为“MyNewService”。将AutoLog属性设置为true。在“视图”菜单中单击“代码”以打开代码编辑器。编辑Main方法以创建“MyNewService”的实例。当在步骤3中重命名服务时,未在Main方法中修改类名。在VisualC#和VisualJ#应用程序中,Main方法分别位于Program.cs和Program.js文件中。VisualBasic复制代码'ToaccesstheMainmethodinVisualBasic,selectMainfromthe'methodnamedrop-downlist.ThisexpandstheComponentDesigner'generatedcoderegion.SharedSubMain()DimServicesToRun()AsSystem.ServiceProcess.ServiceBase'Changethefollowinglinetomatch.ServicesToRun=NewSystem.ServiceProcess.ServiceBase()_{NewMyNewService()}System.ServiceProcess.ServiceBase.Run(ServicesToRun)EndSubC#复制代码staticvoidMain(){System.ServiceProcess.ServiceBase[]ServicesToRun;//Changethefollowinglinetomatch.ServicesToRun=newSystem.ServiceProcess.ServiceBase[]{newMyNewService()};System.ServiceProcess.ServiceBase.Run(ServicesToRun);}J#复制代码publicstaticvoidmain(String[]args){System.ServiceProcess.ServiceBase[]ServicesToRun;ServicesToRun=newSystem.ServiceProcess.ServiceBase[]{newMyNewService()};System.ServiceProcess.ServiceBase.Run(ServicesToRun);}向服务添加功能在下一节中,将自定义事件日志添加到Windows服务中。事件日志与Windows服务没有任何形式的关联。此处,EventLog组件用作可以添加到Windows服务的组件类型的示例。有关自定义事件日志的更多信息,请参见如何:创建和移除自定义事件日志。将自定义事件日志功能添加到服务中在“解决方案资源管理器”中,右击“Service1.vb”、“Service1.cs”或“Service1.jsl”,并选择“视图设计器”。从“工具箱”的“组件”选项卡,将EventLog组件拖到设计器中。在“解决方案资源管理器”中,右击“Service1.vb”、“Service1.cs”或“Service1.jsl”,并选择“查看代码”。编辑构造函数以定义一个用户事件日志。VisualBasic复制代码'ToaccesstheconstructorinVisualBasic,selectNewfromthe'methodnamedrop-downlist.PublicSubNew()MyBase.New()InitializeComponent()IfNotSystem.Diagnostics.EventLog.SourceExists("MySource")ThenSystem.Diagnostics.EventLog.CreateEventSource("MySource",_"MyNewLog")EndIfEventLog1.Source="MySource"EventLog1.Log="MyNewLog"EndSubC#复制代码publicMyNewService(){InitializeComponent();if(!System.Diagnostics.EventLog.SourceExists("MySource")){System.Diagnostics.EventLog.CreateEventSource("MySource","MyNewLog");}eventLog1.Source="MySource";eventLog1.Log="MyNewLog";}J#复制代码publicMyNewService(){InitializeComponent();if(!System.Diagnostics.EventLog.SourceExists("MySource")){System.Diagnostics.EventLog.CreateEventSource("MySource","MyNewLog");}eventLog1.set_Source("MySource");eventLog1.set_Log("MyNewLog");}定义服务启动时发生的情况在代码编辑器中,找到创建项目时已自动重写的OnStart方法,然后编写代码来确定当服务开始运行时发生的情况:VisualBasic复制代码'ToaccesstheOnStartinVisualBasic,selectOnStartfromthe'methodnamedrop-downlist.ProtectedOverridesSubOnStart(ByValargs()AsString)EventLog1.WriteEntry("InOnStart")EndSubC#复制代码protectedoverridevoidOnStart(string[]args){eventLog1.WriteEntry("InOnStart");}J#复制代码protectedvoidOnStart(String[]args){eventLog1.WriteEntry("InOnStart");}说明:服务应用程序设计为长时间运行。因此,它通常轮询或监视系统中的情况。监视是在OnStart方法中设置的。但是,OnStart实际上不进行监视。服务的操作开始之后,OnStart方法必须返回到操作系统。它不能始终循环或阻止。若要设置简单的轮询机制,可以使用System.Timers..::.Timer组件。在OnStart方法中,可以设置组件上的参数,然后将Enabled属性设置为true。然后,计时器将在代码中周期性地引发事件,此时,服务可以进行其监视工作。定义服务停止时发生的情况在代码编辑器中,从“方法名称”下拉列表中选择OnStop过程,该过程在创建项目时已自动重写。编写代码以确定服务停止时发生的情况:VisualBasic复制代码ProtectedOverridesSubOnStop()EventLog1.WriteEntry("InOnStop.")EndSubC#复制代码protectedoverridevoidOnStop(){eventLog1.WriteEntry("InonStop.");}J#复制代码protectedvoidOnStop(){eventLog1.WriteEntry("InonStop.");}还可以重写OnPause、OnContinue和OnShutdown方法来定义对组件的其他处理。定义服务的其他操作对于要处理的方法,重写适当的方法并定义要发生的情况。下面的代码显示重写OnContinue方法时代码的情况:VisualBasic复制代码ProtectedOverridesSubOnContinue()EventLog1.WriteEntry("InOnContinue.")EndSubC#复制代码protectedoverridevoidOnContinue(){eventLog1.WriteEntry("InOnContinue.");}J#复制代码protectedvoidOnContinue(){eventLog1.WriteEntry("InOnContinue.");}安装Windows服务时必须执行某些自定义操作,这可以由Installer类来完成。VisualStudio可以专门为Windows服务创建这些安装程序并将它们添加到项目中。为服务创建安装程序在“解决方案资源管理器”中,右击“Service1.vb”、“Service1.cs”或“Service1.jsl”,并选择“视图设计器”。单击设计器的背景以选择服务本身,而不是它的任何内容。设计器具有焦点时,右击然后单击“添加安装程序”。默认情况下,向您的项目添加一个包含两个安装程序的组件类。将该组件命名为ProjectInstaller,它包含的安装程序分别是服务的安装程序和服务关联进程的安装程序。在“ProjectInstaller”的“设计”视图中,单击“ServiceInstaller1”或“serviceInstaller1”。在“属性”窗口中,将ServiceName属性设置为“MyNewService”。将StartType属性设置为Automatic。在设计器中单击“ServiceProcessInstaller1”(对于VisualBasic项目)或“serviceProcessInstaller1”(对于VisualC#或VisualJ#项目)。将Account属性设置为LocalService。这将使得在本地服务帐户上安装和运行该服务。安全说明:LocalService帐户用作本地计算机上的非特权用户,向任何远程服务器显示匿名凭据。使用其他帐户时需要特别小心,因此它们具有较高的特权,会增加您受到恶意代码攻击的风险。生成服务项目在“解决方案资源管理器”中,右击您的项目,然后单击“属性”。出现项目的“属性设计器”。从“应用程序”页的“启动对象”列表中单击“MyNewService”。按Ctrl+Shift+B生成项目。生成项目后,便可以对其进行部署了。安装项目将安装已编译的项目文件并运行要运行Windows服务所需的安装程序。若要创建完整的安装项目,您必须将项目输出“MyNewService.exe”添加到安装项目,然后添加自定义操作来安装“MyNewService.exe”。有关安装项目的更多信息,请参见安装项目。有关自定义操作的更多信息,请参见演练:创建自定义操作。为服务创建安装项目在“解决方案资源管理器”中,右击选择解决方案,指向“添加”,然后单击“新建项目”。在“项目类型”窗格中选择“安装和部署项目”文件夹。在“模板”窗格中选择“安装项目”。将项目命名为MyServiceSetup。单击“确定”。安装项目随即添加到解决方案。然后,将Windows服务项目的输出MyNewService.exe添加到安装项目中。向安装项目添加MyNewService.exe在“解决方案资源管理器”中,右击“MyServiceSetup”,指向“添加”,然后单击“项目输出”。出现“添加项目输出组”对话框。并且在“项目”框中选择了“MyNewService”。在列表中,选择“主输出”,再单击“确定”。MyNewService的主输出的项目项被添加到安装项目中。现在添加自定义操作以安装MyNewService.exe文件。向安装项目添加自定义操作在“解决方案资源管理器”中右击安装项目,指向“视图”,再选择“自定义操作”。出现“自定义操作”编辑器。在“自定义操作”编辑器中右击“自定义操作”节点,再单击“添加自定义操作”。出现“选择项目中的项”对话框。在列表中双击“应用程序文件夹”以将其打开,选择“MyNewService的主输出(活动)”,再单击“确定”。主输出被添加到自定义操作的所有四个节点:“安装”、“提交”、“回滚”和“卸载”。在“解决方案资源管理器”中,右击“MyServiceSetup”项目并选择“生成”。安装Windows服务若要安装“MyNewService.exe”,请右击“解决方案资源管理器”中的安装项目,再选择“安装”。完成“安装向导”中的步骤。生成并保存您的解决方案。启动和停止服务通过执行下列操作之一打开“服务控制管理器”:在WindowsXP和2000专业版中,在桌面上右击“我的电脑”,然后单击“管理”。在“计算机管理”控制台中,展开“服务和应用程序”节点。-或-在WindowsServer2003和Windows2000Server中,单击“开始”,指向“程序”,单击“管理工具”,然后单击“服务”。说明:在WindowsNT4.0版中,可以从“控制面板”中打开此对话框。现在应该看到“MyNewService”列在窗口的“服务”区域中。从列表中选择您的服务,右击该服务,然后单击“启动”。右击该服务,再单击“停止”。验证服务的事件日志输出打开“服务器资源管理器”并访问“事件日志”节点。有关更多信息,请参见如何:在服务器资源管理器中使用事件日志。说明:VisualStudio标准版中不提供“Windows服务”模板及相关功能。找到MyNewLog的列表并展开它。您应该看到服务所执行操作的项。卸载服务在“开始”菜单上打开“控制面板”并单击“添加或删除程序”,然后找到您的服务并单击“卸载”。还可以通过右击.msi文件的程序图标并选择“卸载”来卸载该程序。说明:如果服务是安装在Windows2000上的,则必须重新启动系统才能重新安装服务。在Windows2000中,服务在系统重新启动之前不会完全删除。

解决方案八:

解决方案九:
一个服务最起码要实现OnStart(当然最好再实现OnStop)在OnStart中启动一个定时器,或者开一个线程跑你的实际代码。在OnStop中关闭定时器,或者通知线程退出,然后清理资源。
解决方案十:
直接做个windows服务好了。
解决方案十一:
http://www.cnblogs.com/hnsdwhl/archive/2011/01/10/1932196.html
解决方案十二:
exe开机就自动运行,这个需求没机会做到啊;
解决方案十三:
引用3楼xunzaosiyecao的回复:

1、写成exe程序。2、在exe同级目录下,新建一个bat文件,写上:C:WINDOWSMicrosoft.NETFrameworkv2.0.50727installutil.exeE:/...../XXXX.exepause

双击bat文件,执行,然后再windows服务上设置,开机自启

这个刚试过了,好象对普通的应用程序不行。
解决方案十四:
随便找本入门书看看如何编写windowsservice服务,好不好?
解决方案十五:
引用13楼sp1234的回复:

随便找本入门书看看如何编写windowsservice服务,好不好?


解决方案:
引用12楼xiesongque的回复:

Quote: 引用3楼xunzaosiyecao的回复:
1、写成exe程序。2、在exe同级目录下,新建一个bat文件,写上:C:WINDOWSMicrosoft.NETFrameworkv2.0.50727installutil.exeE:/...../XXXX.exepause

双击bat文件,执行,然后再windows服务上设置,开机自启

这个刚试过了,好象对普通的应用程序不行。

这个肯定不行的,不过开机自动启动不一定要做成服务,计划任务、在开始菜单的启动里面加个快捷方式都可以。
解决方案:
引用3楼xunzaosiyecao的回复:

1、写成exe程序。2、在exe同级目录下,新建一个bat文件,写上:C:WINDOWSMicrosoft.NETFrameworkv2.0.50727installutil.exeE:/...../XXXX.exepause

双击bat文件,执行,然后再windows服务上设置,开机自启

大神可以解释一下里面的含义么?

时间: 2024-09-25 17:58:00

一个C#程序咋做成服务的相关文章

一个小程序,windows服务,每4个小时监测下内存,如果大于4G就重启服务器

问题描述 各位大佬,求代码求链接各种求 解决方案 解决方案二:连续发了3个一样的帖子啊LZ解决方案三:你这做法太暴力了吧,可以考虑检测哪些应用.服务的内存占用过大,然后重启应用或服务.解决方案四:引用1楼wangjun8868的回复: 连续发了3个一样的帖子啊LZ 是啊兄弟比较急帮帮忙解决方案五:引用2楼ajianchina的回复: 你这做法太暴力了吧,可以考虑检测哪些应用.服务的内存占用过大,然后重启应用或服务. 兄弟帮帮忙找找这个程序该怎么写解决方案六:就是找你对应服务器可以获取当前内存的代

18_Android中Service的生命周期,远程服务,绑定远程服务,aidl服务调用,综合服务案例,编写一个应用程序调用远程支付宝远程服务场景

============================================================================服务的生命周期: 一.采用start的方式开始服务 生命周期如下:            onStart()过时了 开启服务:onCreate()-àonStartCommand()-àonDestory(); 如果服务已经开启,不会重复的执行onCreate(),而是会调用onStartCommand(); 如果停止的时候onDestory()

我的程序员之路:一个女程序员的奋斗经历

因为有人在酷壳里评论里说我给一个女程序员的建议不靠谱,我不服,因为我的工作经历中的一些女程序员都很不错,比那些男程序员都强,所以,我在新浪微博和twitter上征集女程序员的故事和想法,这两天来,我收到了好几封邮件,让我很感动.其中,有一个故事让我回味很久,在脑海里挥之不去,可能是因为她的经历和我很相似,她的想法和我很有共鸣. 本来,我想通过收到的这些故事然后编辑成一篇关于女程序员的文章,但是我觉得这个故事已经足够好了,任何的编辑都是对这个故事的不尊重,所以,我原封不动,一字不改地把这个故事转到

ervice 服务-谁知道,如何把Service做成服务,开机自启动

问题描述 谁知道,如何把Service做成服务,开机自启动 我对把Service做成服务者一块,很迷糊.1:做成服务,他还需要activity界面吗?怎么把activity弄没?2:开机自启动 为何不管用.... 解决方案 解决方案二: 开机自启动服务Service 解决方案三: 楼主留下邮箱,我发个软件给你!快捷打开关闭,如果你是学c#的,我把源码发给你! 解决方案四: 系统自带的有一个task的程序, 你写一个小的app调用你的服务 ,. 然后在task里设置开机自动启动app. 解决方案五

一个女程序员的故事

        从哪里说起呢,我的程序员之路.有些话只是自己心里想的很明白,还从没说过.希望你有耐心看完,因为我的故事不精彩,也算不上奋斗史.我的文笔和叙事能力也很差.        高中报志愿的时候坚定的报了计算机技术及应用,当时对计算机的认识只是机房里的苹果机,和老师教的用basic 输出一个正方形之类的. 我当时觉得我对计算机一无所知,我想了解他,就选择了这个专业,当然当时程序员的收入也是可观的. :)        大学四年下来,我的成绩不好,基础也不好,没拿过奖学金.大学的课程很多不喜

> 前言(补充) 和第三章 第一个C#程序(rainbow 翻译)(来自重粒子空间)

程序 <<展现C#>> 前言(补充) 和第三章 第一个C#程序(rainbow 翻译)   出处:http://www.informit.com/matter/ser0000001/chapter1/ch03.shtml 正文: 前言0.1  提要    欢迎阅读<展现 C#>(Presenting C#).这本书是你提高企业编程语言的一条捷径.这种企业编程语言带有下一代编程语言服务运行时(NGWS Runtime):C#(发音"C sharp").

系统日志中“Windows已经检测到一个应用程序正在侦听传入流量”

问:服务器有下面系统日志 Windows 已经检测到一个应用程序正在侦听传入流量. 名称: - 路径: C:\WINDOWS\system32\svchost.exe 进程标识符: 752 用户帐户: NETWORK SERVICE 用户域: NT AUTHORITY 服务: 是 RPC 服务器: 否 IP 版本: IPv4 IP 协议: UDP 端口号: 57214 允许的: 否 通知用户的: 否 有关更多信息,请参阅在 http://go.microsoft.com/fwlink/event

设计一个高效的缓存管理服务 C#

一直以来,我都发现程序的运行速度不够理想.通过查代码,发现程序对数据库的访问非常频繁,而且检索出来的数据量比较大.为了让程 序运行快起来,我想对程序采用适当的缓存方法. 我在C#尝试了5种方法进行数据缓存,具体如下: (如有遗漏,错误欢迎大家指正,欢迎提建议.) 1:Session方法:此方法是针对于每个用户来的,如果用户量比较大,那么建议不要采用此方法,否则会大量耗尽服务器资源. 2:Cache方法: 2.1:对于每个用户来说访问的数据最好是一致的,否则要用不同的key标识不同的缓存. (要缓

将Java程序注册成系统服务

你是不是在找将Java程序注册成系统服务的方法?试试Java Service Wrapper这个工具吧,你可以从这个网站上面下载你喜欢的版本:http://wrapper.tanukisoftware.org/ ,Java Service Wrapper提供了适合市面上流行的操作系统的版本. 使用Wrapper将Java程序注册成系统服务有三种方式可供选择: 第一种是使用WrapperSimpleApp 这个帮助类来运行你的程序,这个是最简单的方法,也是官方推荐使用的方式,但是这样可能会对你的程