定时执行exe、windows任务计划、windows服务
环境:
Windows10 + VS2015 + SQL Server2014 + .NET Framework4.5 + C# + WCF
问题:
业务功能需要,做了一个windows应用程序供主程序点击按钮调用,但这只是有特别需要时的可操作入口,需求是最好做成定时触发自动启动。
解决:
以前没做过,首先想到的是控制台应用程序加Timer计时器定时触发,但是想想控制台随便被别人关闭了可咋整【手动笑哭】。然后就想到了服务,百度之时发现【windows任务计划程序功能】很能满足这种定时任务需求,遂尝试了一下,果真很好用,在此献上其一二使用说明链接:
链接一:https://jingyan.baidu.com/article/47a29f242a580bc014239939.html (Win7\Win8)
链接二:https://jingyan.baidu.com/article/fedf0737a4c74735ac897786.html (Win10)
但是我担心使用任务计划功能对我们的程序和业务来说不太正规,所以还是想研究一下服务。我们主程序有自己的服务的,所以我尝试在服务启动时加计时器,隔一段时间(比如一分钟)就判断当前时间是否等于服务端配置文件配置的时间,如果相等就启动EXE。这种做法我想对主程序服务性能会不会有一点影响,于是接着研究单纯的做一个Windows服务,在这个服务里去计时触发条件启动EXE。下附两个参考文章链接:
链接三:https://www.cnblogs.com/goto/p/4172274.html (使用命令安装服务)
链接四:http://www.cnblogs.com/LoveJenny/archive/2013/03/05/2943691.html (使用VS外部工具添加服务安装工具)
在使用命令安装服务的过程中,我主要遇到以下两个问题:
在“安装”阶段发生异常:这个好像是用管理员运行命令程序解决的。

在安装的“提交”阶段发生异常:这好像是链接三里的ProjectInstaller_Committed方法(实现安装后自动启动服务)导致的,我注释掉这个方法就可以成功提交了,只是后面要自己手动启动服务。

这种方法实现了,问题又来了,一个功能我要用两个EXE实现,是不是麻烦了点,被调用的那个EXE可不可兼具windows服务性质呢?于是我又百度了下,还真找到了一篇不错的分享,这里奉上链接并感谢博主!
.NET创建一个既是可执行程序又是Windows服务的exe:https://www.cnblogs.com/yzeng/p/4205533.html
其实就是在现有EXE的项目里添加那个windows服务类,在这个类的onstart和onstop事件里写计时及条件,其他还是照旧。这里还是有些问题需要记录一下:
一是如果这个EXE是以服务运行,当在指定时间点触发功能方法时,功能方法在执行过程中会报以下错误(由于功能方法涉及窗体及第三方控件):当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“43c3ef10-8fe6-45cd-a65b-1792fd3fb9de”。由于这个项目的特殊性,网上大多数的解决办法(应用程序的主方法上指定 [STAThread] 指令。 将此方法在执行时 ApartmentState 属性设置为该线程为STA 。)是不适用的,最终解决办法是新建一个单线程单元,在这里执行功能方法。下附部分代码:

暂写到这里,后续补充一些相关截图。
定时执行exe、windows任务计划、windows服务的更多相关文章
- 将可执行exe文件注册成windows服务
要把应用程序添加为服务,你需要两个小软件:Instsrv.exe和Srvany.exe.Instsrv.exe可以给系统安装和删除服务,Srvany.exe可以让程序以服务的方式运行.这两个软件都包含 ...
- 使用ASP.NET实现Windows Service定时执行任务
转载http://blog.csdn.net/yanghua_kobe/article/details/6937816 我们怎样才能在服务器上使用asp.net定时执行任务而不需要安装windows ...
- C# 创建系统服务并定时执行【转载】
[转载]http://www.cnblogs.com/hfzsjz/archive/2011/01/07/1929898.html C# 创建系统服务并定时执行 1.新建项目 --> Windo ...
- Oralce 导出脚本命令,定时执行
原文:Oralce 导出脚本命令,定时执行 @echo off @echo ================================================ @echo window ...
- C#创建windows服务并定时执行
一.创建window服务 1.新建项目-->选择Windows服务.默认生成文件包括Program.cs,Service1.cs 2.在Service1.cs添加如下代码: System.Tim ...
- .net 开发定时执行的windows服务
环境:win7+vs2010+Oracle11g+office2010(64位操作系统) 需求:开发定时执行的windows服务从数据库中查询数据下载到指定地址Excel中 一.添加新建项目——win ...
- C# 编写windows服务及服务的安装、启动、删除、定时执行任务
一.编写windows服务 1.VS2017 - 创建服务Myservice 2.创建好项目之后 --- >> 双击 Service1.cs ---- >> 出现一个设计 ...
- Windows Server 2008中使用计划任务定时执行BAT bat进行PHP脚本的执行
Windows Server 2008中使用计划任务定时执行BAT bat进行PHP脚本的执行 2016年01月03日 17:36:00 持之以恒 阅读数:5520 标签: windows定时任务.b ...
- 在WINDOWS任务计划程序下执行PHP文件 PHP定时功能的实现
最近需要做一个定时任务功能,从网站找了很多相关的代码,windows实现方法综合起来大概就两种, 一.使用PHP ignore_user_abort 函数 即使关掉浏览器也能正常运行:(个人感觉PHP ...
随机推荐
- flask框架(六): 实现支持正则的路由
一:默认路由 @app.route('/user/<username>') @app.route('/post/<int:post_id>') @app.route('/pos ...
- fiddler(四)、断点(转)
前言 先给大家讲一则小故事,在我们很小的时候是没有手机的,那时候跟女神聊天都靠小纸条.某屌丝A男对隔壁小王的隔壁女神C倾慕已久,于是天天小纸条骚扰,无奈中间隔着一个小王,这样小王就负责传小纸条了.有一 ...
- AtCoder AGC014E Blue and Red Tree (启发式合并)
题目链接 https://atcoder.jp/contests/agc014/tasks/agc014_e 题解 完了考场上树剖做法都没想到是不是可以退役了... 首先有一个巨难写的据说是\(O(n ...
- Into Blocks (easy version)
G1 - Into Blocks (easy version) 参考:Codeforces Round #584 - Dasha Code Championship - Elimination Rou ...
- Hbase Bulkload
前言 Apache HBase 是目前大数据系统中应用最为广泛的分布式数据库之一.我们经常面临向 HBase 中导入大量数据的情景,通常会选择使用标准的客户端 API 对 HBase 进行直接的操作, ...
- 「CF803C」 Maximal GCD
题目链接 戳我 \(Solution\) 令\(gcd\)为\(x\),那么我们将整个序列\(/x\),则序列的和就变成了\(\frac{n}{x}\),所以\(x\)必定为\(n\)的约数所以现在就 ...
- CentOS7 docker服务部署
以下命令可以在root身份下保存为shell脚本直接bash一次性执行 参考: https://yeasy.gitbooks.io/docker_practice/install/centos.htm ...
- maven 打包异常
异常信息: [ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.1.6.RELEASE ...
- 解决:Oracle 异常 ORA-01861: literal does not match format string(字符串格式不匹配)
今天在写存储过程的时候,老是报一个错.如下,记录下来,以供日后查阅. 报错: Oracle 异常 ORA-01861: literal does not match format string(字符 ...
- pyqt5 工具栏文字图片同时显示
import sys from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication from PyQt5.QtGu ...