VS2015 定时服务及控制端
一. 服务端
- 如下图—新建项目—经典桌面—Windows服务—起名svrr

2. 打到server1 改名为svrExecSqlInsert 右击对应的设计界面,添加安装服务目录结构如图


3. svrExecSqlInsert里有打到OnStart()方法开始写代码如下
/// <summary>
/// 服务开启操作
/// </summary>
/// <param name="args"></param>
protected override void OnStart(string[] args)
{
Timer tmInsert = new Timer();
tmInsert.Interval = ;//5秒的定时器
tmInsert.Elapsed += TmInsert_Elapsed;
tmInsert.Enabled = true;
} /// <summary>
/// 定时执行数据库插入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TmInsert_Elapsed(object sender, ElapsedEventArgs e)
{
using (SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=123;database=oa"))
{
using (SqlCommand cmd = new SqlCommand())
{
con.Open();
cmd.Connection = con;
cmd.CommandText = @"insert into UserInfo(UserName,Password,dutyid,RegTime,email)
values('test','123',0,GETDATE(),'a@b.com')";
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery(); } }
}
到现在服务端就完成了 选通过命令安装后 看看数据库中的变化 已经生成了很多数据了

二. 服务控制端 有时我们同一个服务可能通过配置文件等对不同实例的数据库进行操作而服务又要安在同一台电脑上,不要说用的人员了就是.net开发的人员对这一些命令也有点头大,那么就有了控制断,这个先建一个窗体应用程序

1. 将form1改为frmMain 放一个menuStrip 管理服务(安装、卸载、刷新)、操作服务(启动、停止)、退出 再加一下dataGridView Dock=fill
2. 增加一个ServiceInfo类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace SvrUI
{
public class ServerInfo
{
public string SvrName { get; set; }
public string SvrDisplayName { get; set; }
public string SvrDescription { get; set; }
public string SvrPath { get; set; }
}
}
3在frmMain窗体中加入如下代码来显示计算机中的服务列表 如果要显示自己安装的服务可通过安半时限制服务前缀或后缀过滤一下
public frmMain()
{
InitializeComponent();
IniControls();
IniData();
}
/// <summary>
///1. 添加控件
/// </summary>
private void IniControls()
{
DataGridViewCell cellTemple = new DataGridViewTextBoxCell();
dataGridView1.Columns.AddRange(new DataGridViewColumn[] {
new DataGridViewTextBoxColumn() { Name="SvrName",HeaderText="服务名称",DataPropertyName="SvrName",CellTemplate=cellTemple },
new DataGridViewTextBoxColumn() { Name="SvrDisplayName",HeaderText="服务显示名称",DataPropertyName="SvrDisplayName",CellTemplate=cellTemple},
new DataGridViewTextBoxColumn() { Name="SvrDescription",HeaderText="服务描述名称",DataPropertyName="SvrDescription",CellTemplate=cellTemple},
new DataGridViewTextBoxColumn() { Name="SvrStatus",HeaderText="服务状态",DataPropertyName="SvrStatus",CellTemplate=cellTemple},
new DataGridViewTextBoxColumn() { Name="SvrPath",
HeaderText ="服务路径",DataPropertyName="SvrPath",CellTemplate=cellTemple,AutoSizeMode= DataGridViewAutoSizeColumnMode.Fill}
});
} /// <summary>
///2. 初始化数据
/// </summary>
private void IniData()
{
//显示服务列表 如果只控制自己安装的服务 可以在安装时限制显示的名称 如显示名称必须包含MySvr:
// var svrs = ServiceController.GetServices().Where(svr=>svr.DisplayName.Contains("MySvr"));
var svrs = ServiceController.GetServices();//显示电脑的全部服务 List<ServiceInfo> lst = new List<ServiceInfo>();
foreach (var svr in svrs)
{
string description = "";
string cpath = GetWindowsServiceInstallPath(svr.ServiceName, out description);
lst.Add(new ServiceInfo() { SvrName = svr.ServiceName, SvrDisplayName = svr.DisplayName, SvrStatus = svr.Status.ToString(), SvrDescription = description, SvrPath = cpath }); } dataGridView1.DataSource = lst; } /// <summary>
/// 获取服务安装路径
/// </summary>
/// <param name="ServiceName"></param>
/// <returns></returns>
public string GetWindowsServiceInstallPath(string ServiceName, out string description)
{
string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
description = (Registry.LocalMachine.OpenSubKey(key).GetValue("Description") ?? "").ToString();
//替换掉双引号
path = path.Replace("\"", string.Empty);
return path;
} private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}
效果如图:

其他代码待续。。。。
VS2015 定时服务及控制端的更多相关文章
- VS2015 C#.net4.6 windows的定时服务
1.创建项目 C#->经典桌面->windows服务 2.创建定时服务 找到服务1,自动生成了 OnStart(服务开启时运行),OnStop(服务关闭时运行)两个函数,我们需要在开启时新 ...
- VS2013创建Windows服务 || VS2015+Windows服务简易教程
转自:https://www.cnblogs.com/no27/p/4849123.htmlhttps://blog.csdn.net/ly416/article/details/78860522 V ...
- Spring定时服务QuartZ
在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等. 我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作, ...
- CentOS7安装OpenStack(Rocky版)-06.安装Neutron网络服务(控制节点)
上一章介绍了独立的nova计算节点的安装方法,本章分享openstack的网络服务neutron的安装配制方法 ------------------- 完美的分割线 ----------------- ...
- Openstack(九)部署nova服务(控制节点)
9.1nova服务介绍 nova是openstack最早的组件之一,nova分为控制节点和计算节点,计算节点通过nova computer进行虚拟机创建,通过libvirt调用kvm创建虚拟机,nov ...
- 第九章 Net 5.0 快速开发框架 YC.Boilerplate --定时服务 Quartz.net
在线文档:http://doc.yc-l.com/#/README 在线演示地址:http://yc.yc-l.com/#/login 源码github:https://github.com/linb ...
- 带控制端的逻辑运算电路_分别完成正整数的平方、立方和阶乘的运算verilog语言
练习:设计一个带控制端的逻辑运算电路,分别完成正整数的平方.立方和阶乘的运算. //--------------myfunction---------- modulemyfunction(clk,n, ...
- LBPL--基于Asp.net、 quartz.net 快速开发定时服务的插件化项目
LBPL 这一个基于Asp.net. quartz.net 快速开发定时服务的插件化项目 由于在实际项目开发中需要做定时服务的操作,大体上可以理解为:需要动态化监控定时任务的调度系统. 为了实现快速开 ...
- C# windows定时服务+服务邮箱发送
protected override void OnStart(string[] args) { timer1 = new System.Timers.Timer(); // timer1 = new ...
随机推荐
- jQuery内容过滤选择器再探究(原创)
内容过滤选择器不算复杂,但还是有需要注意的地方
- linux kill命令
代码 elif [ "$SIGNAL" = 'reload' ]; then kill -USR1 $PID 总结:kill -9 pid 等同于kill -USR9 pid 等同 ...
- mysql 针对table的查看命令行
1 desc t_help; 2 show create table t_help; 3 show table status like 't_help';
- Java技术专区-虚拟机系列-类加载机制(类的初始化)
类加载的生命周期: 加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载 加载 -> 验证 -> 准备 -& ...
- mySQL单表限制大小
MySQL单表大小的限制在目前的技术环境中,由所在主机的OS上面的文件系统来界定而不是由MySQL数据库本身来决定了. 在老版本的MySQL 3.22中,MySQL单表大小为4GB,当时的MySQL的 ...
- DDCTF 北京地铁
这周打了ddctf,被打成了dd 北京地铁题目给了一张北京地铁图,提示如下:Color Threshold 提示:AES ECB密钥为小写字母提示2:密钥不足位用\0补全提示3:不要光记得隐写不看图片 ...
- Oracle备份统计信息
Oracle可以通过DBMS_STATS.GET_TABLE_STATS 收集表的统计信息,一般的收集方法如下: DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => ...
- CentOS 7 安装详细步骤
VMware安装centos 7 前期准备: 1. VMware虚拟机软件(使用的是15x) 2. CentOS-7-x86_64-DVD-1810.iso 一.安装VMware虚拟机软件 略 二.新 ...
- dns轮训python
环境 python3 先安装dnspython模块 httpclient模块 resolver模块 pip install dnspython pip install hhtpclient pip i ...
- fzu 1901 next+脑洞
题目大意: 给你一个字符串str,对于每个str长度为p的前缀,如果str[i]==str[p+i](p+i<len),那么我们认为它是一个periodic prefixs.求所有满足题意的前缀 ...