关于windows 服务的实践

最近工作上有定时更新数据库中某产品数量的要求,主要是同步记录显示产品的使用情况。开始是在Global.asax文件中通过写计时器进行更新。但是数据库中的数据还是没有更新。而写的txt日志上有记录。网上看了很多类型的情况。有人说是iis回收了。并且是只是第一个访问的用户才会对设置的定时器有效。于是,根据博友的建议尝试写个window服务。

以前也没有弄过,找了下资料。依葫芦画瓢新建项目->选择windows 服务,在产生的Service1.cs文件中打开右键查看代码。在对应的方法上写了计时器和数据操作。

声明定时器:  System.Timers.Timer timer1;

OnStart方法:

timer1 = new System.Timers.Timer();

timer1.Interval = 600000;  //设置计时器事件间隔执行时间

timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);

timer1.Enabled = true;

//执行SQL语句或其他操作
            try
            {
                int starttime = DateTime.Now.Hour;
                if (starttime ==20)
                {

DataClassesDataContext db = new DataClassesDataContext();
                    System.IO.StreamWriter sw = System.IO.File.AppendText("D:\\1.txt");
                    string w = "也许你也阳光,但是不够有钱。" + "\r\n"; ;
                    sw.Write(w);
                    sw.Close();

A_Se h = new A_Se();

h.Location = "迪拜";

h.Name = "chen";

h.Num = 10;

h.Code = "001";

h.Username = "小名";

h.Updatedate = DateTime.Now;

db.A_Se.InsertOnSubmit(h);

db.SubmitChanges();

}

}  catch (Exception ex){

Console.Write(ex.Message);

}

}

接着是在视图界面点击添加安装程序。会产生ProjectInstaller.cs。打开会有serviceProcessInstaller1组件,点击设置属性的account的值为LocalSystem。serviceInstaller1组件设置属性ServiceName的值.这就是你在任务管理器,服务里面看到的那个名称,StartType设置为Automatic自动。在右键代码里面添加如下代码:

public ProjectInstaller()

{

InitializeComponent();

this.Committed += new InstallEventHandler(ProjectInstaller_.Committed);

}

private void ProjectInstaller_.Committed(object sender, InstallEventArgs e)         {

//参数为服务的名字

System.ServiceProcess.ServiceController controller = new System.ServiceProcess.ServiceController("ServiceName的值");

controller.Start();

}

在生成菜单栏点击生成(解决方案的名称)。然后通过运行vs的命令提示 installutil window服务路径进行安装,安装启动后我们就可以在任务管理器的服务选项卡看到我们的那个服务了。卸载的命令:installutil /u window服务路径.这里安装的时候一般要放到系统对应的框架目录下,否则会安装异常。我这里用了linq to sql.查看系统日志时提示sa用户提示密码不对。但我一直连接都是sa账户密码应该没有问题,后来我更改连接为本地(.)就可以更新数据了。

很多东西做过了不记下来很快就忘记了。所以决定以后都写下自己经历过的新知识点。好好实践总结提高自己。

时间: 2024-10-13 04:51:15

关于windows 服务的实践的相关文章

Quartz.Net在windows服务中的使用

写在前面 这几天在弄一个项目,需要定时抓取一些数据,当时也想直接用timer算了.因为之前也弄过这样的项目,但是一想,已经用过了,再去使用同一种思路,未免太乏味了.就换了一种新玩法.这里将之前看到的一篇文章中提出的一个思路,在这个项目中实践了一下,发现乐在其中. Quarzt.net [转]C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe 这篇文章,给了一种好玩的方式,并且自己也实践了一下,而且也确确实实在项目中用到了. 简单一个demo,先熟悉如

web站点和windows服务项目发布时如何排除指定文件

在发布asp.net站点和windows服务项目时,有的时候这样的需求:msbuild编译之后发布到服务器指定目录时要排除指定文件,比如通过jenkins构建时,不希望覆盖原来的Web.config和App.config,那么该如何排除呢? web站点项目 比如不希望发布Web.config文件,有以下三种方法. 1,将项Content改为None 修改前: 1 <Content Include="Web.config" /> 修改后: 1 <None Include

企业级Memcached服务应用实践。

企业级Memcached服务应用实践 Memcached服务 一, Memcached介绍 1.1 Memcached与常见同类软件对比 (1)Memcached是什么? Memcached是一个开源的,支持高性能,高并发的分布式内存缓存系统,由C语言编写,总共2000多行代码.从软件名称上看,前3个字符"Mem"就是内存的意思,而接下来的后面5个字符"cache"就是缓存的意思,最后一个字符d,是daemon的意思,代表是服务器端守护进程模式服务. Memcach

C# 远程服务器 安装、卸载 Windows 服务,读取远程注册表,关闭杀掉远程进程

这里安装windows服务我们用sc命令,这里需要远程服务器IP,服务名称.显示名称.描述以及执行文件,安装后需要验证服务是否安装成功,验证方法可以直接调用ServiceController来查询服务,也可以通过远程注册表来查找服务的执行文件:那么卸载文件我们也就用SC命令了,卸载后需要检测是否卸载成功,修改显示名称和描述也用sc命令.至于停止和启动Windows服务我们可以用sc命令也可以用ServiceController的API,当停止失败的时候我们会强制杀掉远程进程,在卸载windows

(转)为C# Windows服务添加安装程序

本文转载自:http://kamiff.iteye.com/blog/507129 最近一直在搞Windows服务,也有了不少经验,感觉权限方面确定比一般程序要受限很多,但方便性也很多.像后台运行不阻塞系统,不用用户登录之类.哈 哈,扯远了,今天讲一下那个怎么给Windows服务做个安装包.为什么做安装包?当然是方便了,不用每次调用InstallUtil,还有,就是看上去 正规些. 不多说了,先来看看怎么做吧.首先,当然是创建一个Windows服务的项目.这个大家应该都知道怎么做(这都不明白的留

c# windows 服务学习

用C#做windows服务变得简单对了===按照下面步骤来就行了用C#创建Windows服务(Windows Services)例子服务功能:这个服务在启动和停止时,向一个文本文件中写入一些文字信息. 第一步:创建服务框架 要创建一个新的 Windows 服务,可以从Visual C# 工程中选取 Windows 服务(Windows Service)选项,给工程一个新文件名,然后点击 确定.你可以看到,向导向工程文件中增加WebService1.cs类:其中各属性的含意是: Autolog 是

c#创建windows服务

最近做了个windows端的小工具,监测指定文件夹的内容并将新增文件保存到数据库,一开始利用的是windows自带的计划任务去做,现在想改成windows服务. 然后找了篇文章照着弄了下: http://www.cnblogs.com/knowledgesea/p/3616127.html 碰到以下问题: 1.安装服务时提示设置服务登录,需要输入用户名和密码 serviceProcessInstaller类的Account属性默认是User,改为LocalSystem,就不需要输入了. 几种账户

Windows 服务

一. Windows服务的简介 [摘自百度百科]Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面.这种服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用.还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务. 二. Windows 服务实现 1. 创

topshelf包装redis为windows服务

topshelf包装redis为windows服务 Redis服务端目前用的是控制台程序运行,部署的时候能作为windows服务后台运行感觉更好.找到一篇文章Running Redis as a Windows Service,利用windows installer实现的.如果使用topshelf,岂不是可以兼容mono,于是自己动手写了,实现很简单,代码已发布到github上 redis-topshelf. 如何使用? 1.打卡配置文件,配置文件描述如下: redis.service.name