windows 服务
Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这种服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。引用百度
当需要创建一个服务程序,定时执行的程式
创建Windows服务
Windows服务注意事项
在server的页面添加按钮,计时器都不可以直接引用
需要调用计时器,必须实例化一个timer对象(无法使用设计页面上的timer控件)
protected override void OnStart(string[] args)
{
//写入启动log
LogHelper.WriteLog("service start");
//实例化Timer类,设置间隔时间为5min;
System.Timers.Timer timer2 = new System.Timers.Timer(30000);
LogHelper.WriteLog("计时器开始工作:");
//到时间的时候执行事件;
timer2.Elapsed += new System.Timers.ElapsedEventHandler(OrderTimer_Tick);
//设置是执行一次(false)还是一直执行(true);
timer2.AutoReset = true;
//是否执行System.Timers.Timer.Elapsed事件;
timer2.Enabled = true;
timer2.Start();
LogHelper.WriteLog("run");
}
/// <summary>
/// timer执行
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
public void OrderTimer_Tick(object source, System.Timers.ElapsedEventArgs e)
{
//执行一次记录一次时间
LogHelper.WriteLog(DateTime.Now.ToString() + "检查良率");
try
{
program.ExecuteCode(url);//执行逻辑
}
catch (Exception mess)
{
LogHelper.WriteError(mess.Message);
}
}
逻辑代码都是一样的。
Windows服务的安装与卸载
//安装服务
private void InstallService(string serviceFilePath)
{
using (AssemblyInstaller installer = new AssemblyInstaller())
{
installer.UseNewContext = true;
installer.Path = serviceFilePath;
IDictionary savedState = new Hashtable();
savedState.Add("USER", null);
installer.Install(savedState);
installer.Commit(savedState);
}
}
//卸载服务
private void UninstallService(string serviceFilePath)
{
using (AssemblyInstaller installer = new AssemblyInstaller())
{
installer.UseNewContext = true;
installer.Path = serviceFilePath;
installer.Uninstall(null);
}
}