监控服务,首先当然是个服务了。至于什么是windows服务,这里就不多说了。正题

1. 创建服务项目

打开VS编程环境,在C#中创建windows服务项目

2.创建后属性中更改名称和服务名。

3.增加一个定时器 (这里的timer控件一定要是 System.Timers命名空间下的)

4. 增加安装

在设计页面点右键增加安装,之后你会看到以下的样子,并分别进行设定。

注意设定你的显示信息和服务名称,不是控件名。

同时也要设定StartType,我设为自动,这样一开机就会自动启用。

注意使用LocalSystem账号的设定

5.生成安装

选择Release的方式进行Build.

然后到BIN目录的Release文件夹copy相应的文件到一个文件夹。(如 : C:\myService\)

安装:

在此文件夹下编写install.bat

内容如下:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe   C:\myService\MonitorEmailService.exe
net start MonitorEmailService
pause

再写一个Uninstall.bat用于卸载。

net stop MonitorEmailService
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /uninstall C:\myService\MonitorEmailService.exe
pause

然后以管理员的身份运行install.bat。就会在服务中找到该服务了。

至此一个服务安装完成。

这里有几点需要注意的。

1. timer控件要是System.timers命名空间下的。

2. timer的事件不要直接在设计介面设定。 不然会出现读取的时间间隔配置会不起作用。最好写在OnStart()里

 protected override void OnStart(string[] args)
{
this.timer1 = new Timer();
const string path = @"C:\myService\MonitorEmail.exe.config";
string s = ""; if (File.Exists(path))
{
s = this.GetSettings(path);
if (s != "")
{
int num = int.Parse(s) * 0x3e8;
this.timer1.Interval = (double)num;
}
else
{
this.timer1.Interval = 600000.0;
}
}
else
{
this.timer1.Interval = 600000.0;
}
// 不能直接在设计页面增加事件,否则按默认的时间间隔,如果没有显示设置间隔,则时间为100ms
this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
this.timer1.Enabled = true; }

3. 要添加安装程序产生ProjectInstaller类。

4. 安装服务时注意批处理中的framework版本要与生成的版本一致。

到这里为止,好像没有写任何关于监控邮件的意思。其实,最主要的代码是放在另一个exe程序,这里面只是起了调用的作用。

 public void timer1_Elapsed(object i, ElapsedEventArgs handler)
{
try
{
ProcessStartInfo startInfo = new ProcessStartInfo(@"C:\myService\MonitorEmail.exe") { WindowStyle = ProcessWindowStyle.Hidden };
Process.Start(startInfo);
}
catch (Exception exception)
{
this.WriteLog(exception.ToString());
}
}

如想了解。MonitorEmail.exe的具体实现,请留意下一后续的文章,当然,也看有没有读者有这方面的需求了。

用C#写个邮件监控服务(一)的更多相关文章

  1. Ambari 邮件监控服务

    配置邮箱授权码 这里演示的是网易邮箱 开启SMTP服务 配置邮件模板 • 下载警告邮件模板 wget https://raw.githubusercontent.com/apache/ambari/b ...

  2. 使用邮件监控Mxnet训练

    1. 前言 受到小伙伴的启发,就自己动手写了一个使用邮件监控Mxnet训练的例子.整体不算复杂. 2. 打包训练代码 需要进行监控训练,所以需要将训练的代码打包进一个函数内,通过传参的方式进行训练.还 ...

  3. 使用 Dalvik 调试监控服务 (DDMS) 工具

    Android 附带一个叫Dalvik 调试监控服务 (DDMS) 的调试工具,它提供端口转发服务.在设备上的屏幕捕获,设备上的线程和堆栈信息, logcat,进程, 和无线状态信息,接收呼叫和SMS ...

  4. 邮件发送服务AWS SES,Mailgun以及SendCloud(转)

    原文:http://www.l4zy.com/posts/aws_ses-mailgun-sendcloud.html 电子邮件这一已经诞生很多年的互联网基础服务并没有随着时间的推移而慢慢消亡,实际上 ...

  5. 写一个python的服务监控程序

    写一个python的服务监控程序 前言: Redhat下安装Python2.7 rhel6.4自带的是2.6, 发现有的机器是python2.4. 到python网站下载源代码,解压到Redhat上, ...

  6. 【supervisor】监控服务

    写了一个ftp服务,用supervisor监控一下 1.先写一个配置文件,路径和名称为/etc/supervisord.conf.d/ftp-server.ini [program:ftp-serve ...

  7. 免费网站监控服务阿里云监控,DNSPod监控,监控宝,360云监控使用对比

    网站会因为各种原因而导致宕机,具体表现为服务器没有响应,用户打不开网页,域名解析出错,搜索引擎抓取页面失败,返回各种HTTP错误代码.网站宕机可能带来搜索引擎的惩罚,网站服务器不稳定与百度关系文章中就 ...

  8. http服务需要pycurl模块这样去监控服务

    最近运维还是比较空闲,写篇自己的心得体会.做过运维的应该都做过http服务了.像一些电子商城,或者是一些互联网公司,web的服务之类是至关重要的,近期看了刘天斯大哥的书觉得自己运维平台应该也可以这样去 ...

  9. k8s1.11.0安装、一个master、一个node、查看node名称是主机名、node是扩容进来的、带cadvisor监控服务

    一个master.一个node.查看node节点是主机名 # 安装顺序:先在test1 上安装完必要组件后,就开始在 test2 上单独安装node组件,实现node功能,再返回来配置test1加入集 ...

随机推荐

  1. centos_7.1.1503_src_2

    farstream02-0.2.3-3.el7.src.rpm 05-Jul-2014 12:59 1.2M   fcoe-utils-1.0.29-9.el7.src.rpm 31-Mar-2015 ...

  2. mac cocoapod安装过程

    cocoapod: 自动化管理第三方开发包的一个插件, 废话不多说, 一个新手只需做如下几个步骤 1-> 安装ruby环境(可忽略, 不是必要) 1.1 首先我们先看看当前你机器上ruby的版本 ...

  3. aspxpopupcontrol弹出在aspxpivotgrid的下方

    ASPxPopupControl是DevPress控件集中非常优秀的控件之一,适用于弹出式窗口.对话窗口.信息提示窗口等的制作,甚至可用作拖放类的图片容器. 我设计时,想点击ASPxButtonEdi ...

  4. mac下谷歌chrome浏览器的快捷键

    1. 标签页和窗口快捷键 ⌘-N 打开新窗口. ⌘-T 打开新标签页. ⌘-Shift-N 在隐身模式下打开新窗口. 按 ⌘-O,然后选择文件. 在 Chrome 浏览器中打开计算机中的文件. 按住  ...

  5. [编程题] 合唱团 && 地闹逃脱

    1. 合唱团 有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最 ...

  6. Sort List——经典(链表中的归并排序)

    Sort a linked list in O(n log n) time using constant space complexity.    对一个链表进行排序,且时间复杂度要求为 O(n lo ...

  7. 前端读者 | 关于存储及CSS的一些技巧

    @羯瑞 HTML5存储 cookies 大小限制4K 发送在http请求头中 子域名能读取主域名的cookies 本地存储 localStorage sessionStorage 大小限制5M(注意超 ...

  8. jquery中的jsonp和js中的jsonp还有配合php实现的jsonp。

    最近在做一个自己的网站,才知道一个前端需要学习的东西到底有多少. 来吧~步入正题,我的网站空间很小.所以在资源上,就有点吼不住了.跨域拿数据肯定是不可避免的了. 一.原生js: 我们知道他的原理,就是 ...

  9. es6 map数据类型,要比set还很多

    首先它支持多数据存储,具有增删查功能 set()设置 get()获取; has()查找; delete('obj')删除指定:clear()全部删除 size长度 let json={ name:&q ...

  10. Web测试中容易被忽略的Charset问题

    今天继续进行一个更综合的脚本制作,录制设置.进行录制.脚本修改,一切都轻车熟路,进行得很顺利.经过近一个小时的对比和修改,OK,脚本大功告成,终于可以小试牛刀了,嘿嘿.    运行,replay lo ...