为了便于window service的调试和开发。

我整理了一下代码,方便大家查阅

App.config

设置启动时间

timerStart-10点

interval-3600000  1小时检查一次

isdebug-调试模式

<!--timer-->
<add key="timerStart" value="10" />
<add key="interval" value="3600000" />
<!--IsDebug-->
<add key="IsDebug" value="true" />
<!--Log-->
    <add key="logPath" value="D:\Log\" />

Program

static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static void Main()
{ if (MyConfig.IsDebug)
{
//测试
Service1 s = new Service1();
}
else
{
//正式
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
}
}

Service

public Service1()
{
InitializeComponent();
//全局异常
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
//运行
RunService();
} System.Timers.Timer timer1 = new System.Timers.Timer(MyConfig.interval); protected override void OnStart(string[] args)
{
//正式
if (!MyConfig.IsDebug)
{
timer1.AutoReset = true;
timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);
timer1.Enabled = true;
}
} private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (DateTime.Now.Hour == MyConfig.timerStart)
{
RunService();
}
} public void RunService()
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
LogHelper.WriteLog(" <<==开始______________________" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "______________________==>>"); try
{
//处理逻辑
DoSomeThing(); LogHelper.WriteLog(" <<==结束______________________" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "______________________==>>");
}
catch (Exception ex)
{
LogHelper.WriteLog(ex.Message);
LogHelper.WriteLog(ex.StackTrace);
LogHelper.WriteLog(" <<==结束______________________" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "______________________==>>");
}
finally
{
Clear();
} } protected override void OnStop()
{
//正式
timer1.Enabled = false;
} void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
Exception ex = e.ExceptionObject as Exception;
string exStr = "\n" + "\n" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ex.Message + "详细信息如下:\n"
+ Environment.NewLine + "[InnerException]" + ex.InnerException + "\n"
+ Environment.NewLine + "[Source]" + ex.Source + "\n"
+ Environment.NewLine + "[TargetSite]" + ex.TargetSite + "\n"
+ Environment.NewLine + "[StackTrace]" + ex.StackTrace + "\n";
LogHelper.WriteLog(exStr); }
catch { }
finally { }
}


LogHelper

public class LogHelper
{
public static readonly string logPath = ConfigurationManager.AppSettings["logPath"];
private static readonly object writeFile = new object();
public LogHelper() { } /// <summary>
/// 在本地写入错误日志
/// </summary>
/// <param name="exception"></param>
public static void WriteLog(string debugstr)
{
lock (writeFile)
{
FileStream fs = null;
StreamWriter sw = null; try
{
string filename = DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
//服务器中日志目录 if (!Directory.Exists(logPath))
Directory.CreateDirectory(logPath);
fs = new FileStream(logPath + "/" + filename, System.IO.FileMode.Append, System.IO.FileAccess.Write);
sw = new StreamWriter(fs, Encoding.UTF8);
sw.WriteLine(DateTime.Now.ToString() + " " + debugstr + "\r\n");
}
finally
{
if (sw != null)
{
sw.Flush();
sw.Dispose();
sw = null;
}
if (fs != null)
{
// fs.Flush();
fs.Dispose();
fs = null;
}
}
}
} }



window service 开发的更多相关文章

  1. 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

    原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...

  2. C# window Service实现调用有UI的应用程序(关于win xp以后的window系统)

    我开发的系统中有一接口程序(这里就称Task,是一个C#的Console Application)经常无故的死掉,导致第二天的数据不能正常解析,所以,我写了一个window service去监视Tas ...

  3. android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

      android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把 ...

  4. window service 创建

    1:vs中创建一个 window servece 2.右键 添加安装程序 3.更改属性视图中的Account属性为LocalService(本地服务) 更改ServiceName为你自己的服务名称   ...

  5. Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 具体图文解说

    版权声明:本博客全部文章均为原创.欢迎交流.欢迎转载:转载请勿篡改内容,而且注明出处,谢谢! https://blog.csdn.net/waldmer/article/details/3272500 ...

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

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

  7. JAX-RS 方式的 RESTful Web Service 开发

    JAX-RS 方式的 RESTful Web Service 开发 ——基于 CXF+Spring 的实现 Web Service 目前在风格上有两大类,一个是基于 SOAP 协议,一个是完全遵循 H ...

  8. C# window service的创建

    其实我也是第一次在博客园写博客,看到那些高手说自己要多动手写博客,于是乎自己也尝试尝试. 废话不多说.这几天在研究window service,通过查找各种大神写的博客,我终于成功的自己写出来了. 下 ...

  9. 创建 window service 定时任务

    参考文章:http://www.cnblogs.com/jack-liang/archive/2011/05/20/2051743.html 前段时间做过一个项目,前端系统提供添加定时任务,后端系统要 ...

随机推荐

  1. ARM架构相关学习归纳总结

    ARM作为一个生态不仅提供了CPU Core,还提供了一系列相关的IP,比如GIC.MMU.AMBA.CoreLink.CoreSight.Mali等等. 其他还包括Debug工具.开发工具.IDE等 ...

  2. 最近找工作,有招JAVA开发的可以联系我,如果不嫌弃我2年前用C,也可以联系我

    java涉及到的技术工具:HSF.Pandora.Notify.Metaq.Diamond.Tddl.ScheduleX.精卫.Switch.BCP.Tair.Hbase.Mysql.Ads.Tlog ...

  3. Dubbo与Zookeeper在Window上的安装与简单使用

    一:Dubbo是什么?有什么用途?? 使用Dubbo可以将应用分布到多个服务器上,当有访问时,Dubbo有帮你管理自动将请求分配给合适得到服务器去执行,即建立多个生产者,建立多个消费者,自动匹配生产者 ...

  4. Luogu4770 NOI2018 你的名字 SAM、主席树

    传送门 UPD:发现之前被smy误导的一个细节,改过来之后就AC了-- 一道比较套路的SAM题,虽然我连套路都不会-- 先考虑前\(68pts\),也就是\(l=1 , r=|S|\)的情况.我们对\ ...

  5. LOJ2541 PKUWC2018 猎人杀 期望、容斥、生成函数、分治

    传送门 首先,每一次有一个猎人死亡之后\(\sum w\)会变化,计算起来很麻烦,所以考虑在某一个猎人死亡之后给其打上标记,仍然计算他的\(w\),只是如果打中了一个打上了标记的人就重新选择.这样对应 ...

  6. Google BreakPad使用集

    Google Breakpad 学习笔记 - 简书   Qt中使用Google Breakpad捕获程序崩溃异常_Linux编程_Linux公社-Linux系统门户网站 

  7. 免费的 Vue.js 入门与进阶视频教程

    这是我免费发布的高质量超清「Vue.js 入门与进阶视频教程」. 全网最好的.免费的 Vue.js 视频教程,课程基于 Vue.js 2.0,由浅入深,最后结合实际的项目进行了最棒的技术点讲解,此课程 ...

  8. Js把Json序列化为Java接受的对象。

    服务器端 Java定义 data class role(var name: String = "", var remark: String = "") data ...

  9. ProxySQL实现Mysql读写分离 - 部署手册

    ProxySQL是一个高性能的MySQL中间件,拥有强大的规则引擎.ProxySQL是用C++语言开发的,也是percona推的一款中间件,虽然也是一个轻量级产品,但性能很好(据测试,能处理千亿级的数 ...

  10. OSGI的WEB开发环境搭建

    第一步,搭建OSGI环境: 打开eclipse,点击run->run configration..,配置如下,点击run. 运行结果如下图所示:说明OSGI环境搭建完毕. 第二步:搭建基于OSG ...