windows服务定时任务
其实定时任务时不时会碰到,只不过解决方案也不是只有一个,网上也有很多文章,但是没有一篇说得很清楚,尤其是安装环节,今天就着重说一下安装,
其他步骤带过,C#开发windows服务,开发,安装,调试
1. 添加安装程序 (找的其他博客的配图)
之后我们可以看到上图,自动为我们创建了ProjectInstaller.cs以及2个安装的组件。
2)修改安装服务名
右键serviceInsraller1,选择属性,将ServiceName的值改为ServiceTest。
3)修改安装权限
右键serviceProcessInsraller1,选择属性,将Account的值改为LocalSystem。
2.业务代码(读取配置文件里面的所有节点,然后开启多个定时任务)app.config配置如下:

protected override void OnStart(string[] args)
{ NameValueCollection urls = ConfigurationManager.AppSettings; List<Timer> timers = new List<Timer> ();
int i =;
foreach (var item in urls)
{
try
{
string values = urls["url" + i];
string[] strs = values.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
string url = strs[];
int interval = Convert.ToInt32(strs[]);
Timer temp = new Timer();
temp.AutoReset = true;
temp.Interval = interval;
temp.Enabled = true;
temp.Elapsed += new ElapsedEventHandler((object sender, System.Timers.ElapsedEventArgs e) =>
{
try
{
Http.Get(url);
}
catch (Exception ex)
{
Log.LogResult(ex.StackTrace);
} });
temp.Start(); timers.Add(temp);
}
catch (Exception ex)
{ Log.LogResult("创建timer失败:"+ex.StackTrace);
}
i++;
}
}
3. 安装
如果项目是4.0的,那么要去 C:\Windows\Microsoft.NET\Framework\v4.0.30319 (V4.0开头的就行) 路径下面找到 InstallUtil.exe
项目如果是2.0的,那么找 C:\Windows\Microsoft.NET\Framework\v2.0.50727 (v2.0 开头就行) 路径下面找到 InstallUtil.exe
要将服务安装到哪台机就要去哪台机里面找,没有框架就装框架,如果复制本地的文件到远程服务器使用是不行的,微软有安全验证
将文件installUtil.exe 复制到 Debug目录下面
准备工作做好,开始安装: 以管理员身份打开cmd,然后进到Debug目录里面,先试试installutil.exe 有没有用

出现类似页面就说明有用,
执行命令 installutil serviceTest.exe(服务对应程序名称debug下面的 .exe )
如果出现安装成功字眼,并且没有出现错误字眼,说明服务安装成功
然后去服务里面找到这个服务

4.调试 (调试 => 附加到进程 )
windows服务无法直接运行调试,跟着步骤来: 启动服务才能附加进程调试

如果勾都打上了还找不到,就关闭这个窗口稍微等等再来一次,准能找到
然后就可以愉快的加断点调试了

如果改了代码,需要先停止服务 ,然后重新生成项目,再启动,然后重新附加进程
windows服务定时任务的更多相关文章
- 可视化Windows服务定时任务
思路:1.新建一个<Windows服务项目>,在里面建服务文件(可以多个),用来做要执行的任务. 2.新建一个<Windows窗体应用程序>,在这个程序里管理服务.如:安装.卸 ...
- windows服务 定时任务
1.c#程序做成windows服务 若用cmd安装: var path = Process.GetCurrentProcess().MainModule.FileName + " s&quo ...
- Windows服务中用Timer和线程两种方式来执行定时任务
在Service服务文件夹下新建Windows服务 - TestService
- 定时任务-C#线程类 windows服务
原理 最常用的就是C#中 timer类写一个定时方法,然后在把他宿主到windows服务里面. C#中Timer分类 关于C# Timer类 在C#里关于定时器类就有3个 C# Timer使用的方法 ...
- 不用写Windows服务实现定时器功能(FluentScheduler )
MacBook Pro 只有四个 USB Type-C 接口是否错了? 一项新技术的诞生总会对已存在的事物造成冲击或影响,如果大家都害怕冲击与影响,那这个世界永远像现在不变就行了,大家都好好的,待在自 ...
- C#实现对Windows 服务安装
Windows服务作用:定时用户消息推送,WEB程序实时统计等 Windows服务创建:C#创建服务的方式也有很多种,建议大家在做之前可以先全面了解一下这方面东西再去动手这样便于解决中间遇到一些比较棘 ...
- Quartz.Net在windows服务中的使用
写在前面 这几天在弄一个项目,需要定时抓取一些数据,当时也想直接用timer算了.因为之前也弄过这样的项目,但是一想,已经用过了,再去使用同一种思路,未免太乏味了.就换了一种新玩法.这里将之前看到的一 ...
- 使用Topshelf组件构建简单的Windows服务
很多时候都在讨论是否需要了解一个组件或者一个语言的底层原理这个问题,其实我个人觉得,对于这个问题,每个人都有自己的看法,个人情况不同,选择的方式也就会不同了.我个人觉得无论学习什么,都应该尝试着去了解 ...
- 使用NSSM把.Net Core部署至 Windows 服务
为什么部署至Windows Services 在很多情况下,很少会把.Net Core项目部署至Windows服务中,特别是Asp.net Core就更少了.一般情况下,Asp.net Core会部署 ...
随机推荐
- Spring ES
elasticsearchTemplate 和 ElasticsearchRepository JPA中有个ElasticsearchRepository可以做Elasticsearch的相关增删改查 ...
- Python自动化中的元素定位(一)
1.使用selenium中的webdriver模块对浏览器进行操作 1)from selenium import webdriver 加载模块 2)b = webdriver.Friefox() 打开 ...
- 51nod 2513
写代码的时候抄错变量,晕! 另外有个while循环条件错的,因为两个指针必须都要有终止条件 代码: #include<iostream> #include<cstdio> #i ...
- P5302 [GXOI/GZOI2019]特技飞行
题目地址:P5302 [GXOI/GZOI2019]特技飞行 这里是官方题解(by lydrainbowcat) 题意 给 \(10^5\) 条直线,给 \(x = st\) 和 \(x = ed\) ...
- python制作串口工具
# coding:utf-8import timeimport serialimport stringimport binasciiimport linecache FilePath="G: ...
- ubuntu常用命令备忘
1.把一个目录的文件拷贝另一个文件夹 sudo cp -p /home/likewei/lib/needlib/* /home/likewei/lib/11
- .net mvc的“从客户端中检测到有潜在危险的 Request.Form 值”问题解决
第一种解决方案 : 在控制器调用的方法上添加[ValidateInput(false)] 第二种解决方案 : 在对应的asp.net web页面上加上ValidateRequest="fal ...
- jmeter生成html格式接口自动化测试报告
jmeter生成html格式接口自动化测试报告 jmeter自带执行结果查看的插件,但是需要在jmeter工具中才能查看,如果要向领导提交测试结果,不够方便直观. 笔者刚做了这方面的尝试,总结出来分享 ...
- UGUI中粒子特效与UI的遮挡问题
问题背景: 在做主线任务时发现完成任务后的特效显示穿透上面的UI层,不美观,策划不乐意了,抓紧解决下 解决思路: 首先讲下影响渲染顺序的因素: 能够影响渲染顺序的因素有:1.Camera Depth ...
- spring boot正常启动但是访问会找不到“ localhost 的网页”的错误
最近启动springboot项目访问localhost老报找不到网页,找了很久发现yml配置文件中配置了“context.path”,只要在端口号后面加上context.path地址就可以访问了. 如 ...