一、前言

这周除了改写一些识别算法外,继续我的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程序安装注意事项的更多相关文章

  1. C#Windows Service程序的创建安装与卸载

    C#Windows Service程序的创建安装与卸载 一.开发环境 操作系统:Windows7x64 sp1 专业版 开发环境:Visual studio 2013 编程语言:C# .NET版本: ...

  2. Windows Service 开发,安装与调试

    Visual Studio.net 2010 Windows Service 开发,安装与调试 本示例完成一个每隔一分钟向C:\log.txt文件写入一条记录为例,讲述一个Windows Servic ...

  3. Windows Service的安装卸载 和 Service控制(转)

    Windows Service的安装卸载 和 Service控制 原文地址:http://www.cnblogs.com/Peter-Zhang/archive/2011/10/15/2212663. ...

  4. Windows Service的安装卸载 和 Service控制

    原文 Windows Service的安装卸载 和 Service控制 本文内容包括如何通过C#代码安装Windows Service(exe文件,并非打包后的安装文件).判断Service是否存在. ...

  5. C# 编写的Windows serice程序. 安装时出现异常!

    初学Windows Service 程序的编写,按照MSDN上写了一个service! 遇到安装服务的错误, 能帮忙看下是什么原因吗? 下面是在命令行下的安装结果: 正在运行事务处理安装. 正在开始安 ...

  6. C#中级-通过注册表读取Windows Service程序执行路径

    一.前言        假设我们的C#解决方案中有多个程序应用,如:Web应用.控制台程序.WPF程序应用和Windows服务应用. 那么这些非Windows Service应用程序怎么在代码中找到W ...

  7. .NET开发Windows Service程序 - Topshelf

    在实际项目开发过程中,会经常写一些类似定时检查,应用监控的应用.这类应用在windows平台通常都会写成window service程序. 在百度上搜索一下'c#开发windows service', ...

  8. windows service程序的Environment.CurrentDirectory路径

    当前工作目录Environment.CurrentDirectory,对于winform程序,其是在程序放置的目录里, 而windows service的Environment.CurrentDire ...

  9. VS2010 创建 windows service 程序

    参考网上保护眼睛程序,自写程序如下. 1.创建一个名词为“CareEyeService”,类型为“WindowsService”的应用程序. 自动生成代码如下图: 2.修改ServiceCareEye ...

随机推荐

  1. Winform远程更新代码

    本软件具备以下形: 1.通过http形式在客户端更新winform代码文件 2.在服务端通过软件生成xml配置文件,客户端通过比对xml配置文件来更新代码文件. 服务端: 在服务器上建立一个IIS发布 ...

  2. 12. ZooKeeper配额和认证

    ZooKeeper具有与其数据模型相关的可配置配额(quota). 可以设置znode上的配额限制和存储的数据量.如果ZooKeeper命名空间中的一个子树超出与其关联的配额,ZooKeeper会在日 ...

  3. Android Lint的使用

    一.概述 Android Lint是在ADT 16(和 Tools 16)引入的一个新工具,可以扫描Android 项目源码中潜在的bug .例如: 缺少翻译(和未使用的翻译)布局性能问题(老的lay ...

  4. linux 挂在win下文件

    使用mount命令 #mount -t cifs -o username=abc,password=1234 //192.168.1.10/linux /mnt/linux #mount -t cif ...

  5. 认识 var、let、const

    我们通过声明.初始化.值的可变性.作用域.变量提升以及在工作中如何使用等多个方面来详细了解var.let.const等关键字功能与特点. 声明 var,let:可以先声明,后赋值(初始化),默认值是 ...

  6. deepin 常用设置

    1 不开特效和动画,开启透明无黑边 #!/bin/bash #开启 metacity 窗管合成,取代正在运行的窗管 deepin-metacity --composite --replace #关闭 ...

  7. 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)

    目录 前言 第1章 安装 第2章 程序的基本结构 第3章 模板 第4章 Web表单 第5章 数据库 第6章 电子邮件 第7章 大型程序的结构   前言 学习Python也有一个半月时间了,学到现在感觉 ...

  8. 学问Chat UI(4)

    前言 写这个组件是在几个月前,那时候是因为老大讲RN项目APP的通讯聊天部分后面有可能自己实现,让我那时候尝试着搞下Android通讯聊天UI实现的部分,在这期间,找了不少的Android原生项目:蘑 ...

  9. 《算法》C/C++ 图形处理

    概述 一般图形输出无法就是用循环输出 ,提前构造好图形. 两种方式 ** 模拟法直接输出** ** 二维数组 构造输出** 问题描述 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEF ...

  10. 使用boost::multi_index高速构建排行榜

    使用boost::multi_index高速构建排行榜 前几天在boost的maillist上看到boost::multi_index将要支持ranked_index(邮件内容见附件2),这实乃我等苦 ...