C#中级-Windows Service程序安装注意事项
一、前言
这周除了改写一些识别算法外,继续我的Socket服务编写。服务器端的Socket服务是以Windows Service的形式运行的。
在我完成Windows Service编写后,启动服务时总是出现错误,这里我总结下如何安装、启动及排查故障。
二、正文
先说说Windows Service的安装,这是最基础的。当你编写完Windows Service后,通常要执行一段脚本,脚本与Windows Service应用在同一目录下:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe UpdaterService.exe //UpdaterService为Service应用程序
Net Start SocketService //SocketService为Service名称
sc config SocketService start = auto
pause
当脚本执行时出现服务启动失败(1053-服务没有及时响应启动或控制请求)时,说明你的应用有问题了。
首先要检查下Windows Service应用的dll是否完整,有没有遗漏。
然后如果是编译成功的,看下自己的Service代码是否运行在一个线程里:
using System;
using System.IO;
using System.ServiceProcess;
using System.Threading;
using System.Threading.Tasks; namespace UpdaterService
{
public partial class SocketService : ServiceBase
{
Thread threadforwork = null;
public SocketService()
{
InitializeComponent();
} protected override void OnStart(string[] args)
{
if (threadforwork == null)
{
threadforwork = new Thread(p =>
{
try
{
//Your Service
}
catch (Exception ex)
{
//Log Here
}
});
threadforwork.IsBackground = true;
threadforwork.Start();
}
} protected override void OnStop()
{
if (threadforwork?.ThreadState == ThreadState.Running)
{
threadforwork.Abort();
}
}
}
}
顺利安装完Windows Service后如果需要卸载则,执行另一脚本,同样卸载脚本与Windows Service应用也在同一目录下:
net stop SocketService
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u UpdaterService.exe
pause
如果你想删除这个Windows Service应用所在目录时,正常情况下是可以完全删除的。
但是有时候却不能完全删除,提示你当前程序被占用,无法删除。这种情况一般发生在安装服务成功,启动服务失败的时候,你去卸载就不能完全卸载干净。
你需要运行命令行去删除干净:
sc queryex ServiceName
//这时会显示服务的PID
taskkill /PID ServicePID /f
当命令行显示已成功删除PID之后,你就可以删除应用所在目录了。
三、结语
这周科目二考试居然挂了,平时练得各种顺利,进考场有点懵,居然在倒车入库就屁股顶线两次,真是神奇!奇怪的是,挂了之后心情却异常的好,感觉整个人都突然好了。前几周睡眠不太好,总失眠。挂了之后居然每天都睡的很香,在公司吃饭胃口也好了很多,可能这是命中注定的事吧。在线升级程序也快搞完了,可以做压力测试了。下次定能在神明的保佑下考过科目二!阿门,阿弥陀佛,阿拉胡阿克巴!
C#中级-Windows Service程序安装注意事项的更多相关文章
- C#Windows Service程序的创建安装与卸载
C#Windows Service程序的创建安装与卸载 一.开发环境 操作系统:Windows7x64 sp1 专业版 开发环境:Visual studio 2013 编程语言:C# .NET版本: ...
- Windows Service 开发,安装与调试
Visual Studio.net 2010 Windows Service 开发,安装与调试 本示例完成一个每隔一分钟向C:\log.txt文件写入一条记录为例,讲述一个Windows Servic ...
- Windows Service的安装卸载 和 Service控制(转)
Windows Service的安装卸载 和 Service控制 原文地址:http://www.cnblogs.com/Peter-Zhang/archive/2011/10/15/2212663. ...
- Windows Service的安装卸载 和 Service控制
原文 Windows Service的安装卸载 和 Service控制 本文内容包括如何通过C#代码安装Windows Service(exe文件,并非打包后的安装文件).判断Service是否存在. ...
- C# 编写的Windows serice程序. 安装时出现异常!
初学Windows Service 程序的编写,按照MSDN上写了一个service! 遇到安装服务的错误, 能帮忙看下是什么原因吗? 下面是在命令行下的安装结果: 正在运行事务处理安装. 正在开始安 ...
- C#中级-通过注册表读取Windows Service程序执行路径
一.前言 假设我们的C#解决方案中有多个程序应用,如:Web应用.控制台程序.WPF程序应用和Windows服务应用. 那么这些非Windows Service应用程序怎么在代码中找到W ...
- .NET开发Windows Service程序 - Topshelf
在实际项目开发过程中,会经常写一些类似定时检查,应用监控的应用.这类应用在windows平台通常都会写成window service程序. 在百度上搜索一下'c#开发windows service', ...
- windows service程序的Environment.CurrentDirectory路径
当前工作目录Environment.CurrentDirectory,对于winform程序,其是在程序放置的目录里, 而windows service的Environment.CurrentDire ...
- VS2010 创建 windows service 程序
参考网上保护眼睛程序,自写程序如下. 1.创建一个名词为“CareEyeService”,类型为“WindowsService”的应用程序. 自动生成代码如下图: 2.修改ServiceCareEye ...
随机推荐
- 一个简单的迷你jQuery实现
//仅提供与学习使用(function () { var _$ = window.$; var _jQuery = window.jQuery; //暴露外部使用的一个接口 var jQuery = ...
- Python简单爬虫
爬虫简介 自动抓取互联网信息的程序 从一个词条的URL访问到所有相关词条的URL,并提取出有价值的数据 价值:互联网的数据为我所用 简单爬虫架构 实现爬虫,需要从以下几个方面考虑 爬虫调度端:启动爬虫 ...
- 关于xampp集成开发环境的建立与初步认识
针对于xampp集成开发环境的建立主要分大步骤: 1.把xampp的压缩包压缩到一个盘中,比如c盘:然后点击中间的那个图标开始安装,由于这个软件是配置基本已经OK了,故可以直接next ...
- CCF-201503-3-节日
问题描述 试题编号: 201503-3 试题名称: 节日 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 有一类节日的日期并不是固定的,而是以"a月的第b个星期c&q ...
- Go语言教程5 if switch select
首先您需要有php或是c的基础. 否则可能看不明白 方法如下 if 表达式{ //需要注意的是 没有括号. 没错. 没有括号 比如 if 1>2 {}else{} } else { } s ...
- 在网站开发中经常用到的javaScript技术
1>屏蔽功能类 1.1 屏蔽键盘所有键<script language="javascript"><!--function document.onkeyd ...
- 适合Linux新手的发行版有哪些?
一个很古老的问题,找到适合的 Linux 发行版比简单的指出哪种 Linux 版本受欢迎更重要.为什么这么说?让我们设置一个情景:你有一位用户,很有可能,他过去大多数时候都是在 Windows 或者 ...
- JS对象属性命名规则
JS标识符的命名规则,即变量的命名规则: 标识符只能由字母.数字.下划线和'$'组成 数字不可以作为标识符的首字符 对象属性的命名规则 通过[]操作符为对象添加属性时,属性名称可以是任何字符串(包括只 ...
- NIO相关基础篇二
转载请注明原创出处,谢谢! 上篇NIO相关基础篇一,主要介绍了一些基本的概念以及缓冲区(Buffer)和通道(Channel),本篇继续NIO相关话题内容,主要就是文件锁.以及比较关键的Selecto ...
- android 读取系统文件 wpa_supplicant
1,须要权限 <uses-permission android:name="android.permission.ACCESS_SUPERUSER" /> 2,下载 R ...