在Windows Service中使用Threading.Timer时需要注意回收池问题 Threading.Timer是基于线程池的,系统会对其进行垃圾回收. 当Threading.Timer定义在OnStart方法中时,当服务启动完成后. 系统对其中定义的对象进行回收[回收是不定时进行,所以可能会 运行一段时间然后突然就不运行的情况发生],这时候会把在OnStart 方法的timer进行回收,有可能会造成服务假死的情况.解决办法也很简单 定义到类上就好,如 private System.Th…
(此文章同时发表在本人微信公众号"dotNET开发经验谈",欢迎右边二维码来关注.) 题记:正在构思一个中间件的设计,考虑是否既可以使用最新的技术,也可以兼顾传统的部署模式.所以有了这个问题(包括衍生问题)的提出和解决方法. 托管到Windows Service中 众所周知,ASP.NET Core采用了和传统ASP.NET不同的托管和HTTP处理方式,即把服务器和托管环境完全解耦. ASP.NET Core内置了两个HTTP服务器实现,一个是基于libuv实现的Kestrel(支持跨…
托管到Windows Service中 众所周知,ASP.NET Core采用了和传统ASP.NET不同的托管和HTTP处理方式,即把服务器和托管环境完全解耦. ASP.NET Core内置了两个HTTP服务器实现,一个是基于libuv实现的Kestrel(支持跨平台),一个是基于Windows HTTP Server API实现的WebListener(仅支持Windows). 而托管环境可以和服务器不相关,一般情况是自托管,或者托管到IIS/IISExpress中(此处的IIS仅作为反向代理…
1. 创建WCF服务 在vs2010中创建WCF服务应用程序,会自动生成一个接口和一个实现类:(IService1和Service1) IService1接口如下:   using System.Runtime.Serialization;   using System.ServiceModel;   using System.ServiceModel.Web;   using System.Text;   namespace WcfService   {   [ServiceContract]…
第一部分.自托管 一.依赖.Net Core环境 修改 project.json 文件内容,增加发布时需要包含文件的配置内容(NetCore2.0版本不需要任何设置,NetCore2.0开始彻底放弃project.json,全面改回.csproj,详见难以接受你的改变:从project.json到.csproj) 1 { 2 "version": "1.0.0-*", 3 "testRunner": "xunit", // 设…
在上一篇<.NET 6学习笔记(2)--通过Worker Service创建Windows Service>中,我们讨论了.NET Core 3.1或更新版本如何创建Windows Service.本篇我们将在此基础上,托管ASP.NET Core程序并指定端口.首先让我们创建一个ASP.NET Core Web App,当然Web Api类型也是可以的.通过NuGet来安装Microsoft.Extensions.Hosting.WindowsServices.该库提供了必要的UseWind…
本文转自:http://blog.csdn.net/sharpnessdotnet/article/details/7637180 一定要使用System.Timers.Timer timer 而不是System.Windows.Forms.Timer,否则就悲剧了.public partial class InvkGpsWinService : ServiceBase     {         System.Timers.Timer timer = new System.Timers.Tim…
用C#编写Windows Service时,执行轮询一般有两种方式,一种是用Timer,System.Timers或者是System.Thread下的,这种执行是按时间循环执行,缺点是也许上个执行还没有完成,又开始执行新的. 另一种方式是利用线程,在OnStart里单开一个线程去跑含有死循环结构的函数,这种方式的缺点是,对线程的控制困难,停止服务了,线程还有可能在执行,不过 .Net 4.0+ 给我们提供了 CancellationTokenSource,用来取消正在运行的线程(Task),代码…
昨天,组里一个小朋友告诉我,他写的报表生成服务中无法打开一个已经存在的Excel 2007文件,他的开发环境是Win7.Visual Studio .Net 2008(Windows Server 2008下同样存在此问题).比较奇怪的是,Excel Automation对象是可以实例化的,但是在执行Workbooks.Open时抛出异常如下: Microsoft Office Excel 不能访问文件“a.xls”. 可能的原因有: • 文件名称或路径不存在. • 文件正被其他程序使用. •…
问题: When installing Windows services there are two options for automatically starting a Windows service on Windows startup. One is Automatic, and the other is Automatic (Delayed start). What is the difference between these two in detail? 回答: In short…
直接贴代码了: 首先我们可以把所有的 Job 放到一个单独的 DLL 中,好处是可以共享这些业务 Job.比如我们新建一个 QuartzNetDemo.WinService.Jobs 的类库. 然后,我们再先定义一个 WriteTextToFileJob 的任务: public class WriteTextToFileJob : IJob { // Fields private static readonly string TypeName = typeof(WriteTextToFileJo…
之前的一篇文章讲述了如何通过 Quartz .NET 实现 Timer Job (http://www.cnblogs.com/mingmingruyuedlut/p/8037263.html) 在此基础上如何将实现的Timer Job注册成为Windows Service,请看如下步骤: 1):在VS中创建Windows Service的工程 2):继承 IJob 接口实现对文本文件的写值 using Quartz; using System; using System.Collections…
1.System.Diagnostics.Stopwatch Stopwatch 实例可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间. 在典型的 Stopwatch 方案中,先调用 Start 方法,然后调用 Stop 方法,最后使用 Elapsed 属性检查运行时间.Stopwatch 实例或者在运行,或者已停止:使用 IsRunning 可以确定 Stopwatch 的当前状态. 使用 Start 可以开始测量运行时间:使用 Stop 可以停止测量运行时间. 通过属性 E…
Cloud Service 中WebRole就相当与我们的WebSite,而WorkRole相当与我们在服务器上写了个Windows Service,站在高可用的角度上来讲,Cloud Service要优于WebSite,拿个例子来说,我们上传个数据,数据需要入库,通常website需要提交数据,等待响应,这个时候如果并发量大,系统响应时间会很长.如果使用Cloud Service就不存在这个问题,WebRole只负责把数据提交上来,而对数据的处理入库则可以提交给WorkRole来处理,中间可以…
参考地址:http://www.cnblogs.com/zhili/p/4039111.html 一.如何在Windows Services中寄宿WCF服务 第一步:创建Windows 服务项目,具体添加步骤为右键解决方案->添加->新建项目,在已安装模板中选择Windows 服务模板,具体如下图示所示: 第二步:添加Windows服务之后,修改对应的Service1.cs文件 using System; using System.Collections.Generic; using Syst…
Windows Service(服务)  是运行在后台的进程 1.VS建立 Windows 服务(.NET Framework) 2.添加Timer 双击Service1.cs可以拖控件(System.Windows.Forms.Timer)这儿注意命名空间哦, 双击 trmer1 生成事件,修改事件方法如下: App.config: <appSettings> <add key="TimerExecTime" value="0001-01-01 10:07…
System.Windows.Forms.Timer执行的时候,如果你在过程中间加一个sleep整个的界面就死掉了,但是另外两个没有这个情况,System.Timers.Timer.System.Threading.Timer!System.Timers.Timer.System.Threading.Timer这两个平时用的时候没有发现太大的区别,定时的精度都差不多.一般我个人用的话,还是用的System.Threading.Timer比较多,用编程的方法比较好用!System.Windows.…
System.Windows.Forms.Timer.System.Timers.Timer.System.Threading.Timer的 区别和用法http://space.itpub.net/12639172/viewspace-571197 http://msdn.microsoft.com/en-us/magazine/cc164015.aspx ================================================== System.Windows.Form…
多年前玩过一次windows service,觉得挺简单的. 这次工作要维护产品中的windows service,发现不是那么简单,vs附加调试器的窗体中无法找到windows service进程.刚开始怀疑服务的代码是不是有问题,结果做了一个demo,发现还是调试不了. 所以猜想跟win7有关系.与是在google中有can not debug windows service win7的关键字搜索,发现一个解决方案. http://stackoverflow.com/questions/10…
C# windows服务程序中的Timer控件的使用问题是如何解决的呢? 今天和同事一起研究了下C# windows服务程序中的Timer控件的使用的写法. 我们在建立一个C# windows服务程序后,要用到计时器的话一般都会想到Timer控件,于是到工具器把Timer控件拉过来,双击写事件,设置时间,哇,成功了.... 但服务一跑起来,唉,怎么回事,时间到了怎么没有执行事件呢? 后来,我找很多资料才知道,这个Timer控件是winForm下的,不能用在C# windows服务程序中. 怎么办…
最近做个windows 服务,功能是:定时执行一个任务:自动登录到一个网站后,点击相关网面上的按钮button. 在处理的过程中发现定时器老是不定时的失效,失效时间没有规律. 由于刚开始处于测试阶段,所以只简单的log一下到时间间隔后是否执行了定时器定时Elapsed事件:结果出错了,每大约相隔几个小时就没有log记录了,是怎么回事呢? 为什么运行一段时间后(一般几个小时到十几个小时)定时器就不工作了,过了一段时间后又会自动工作了. 也就是说   log.Info("Do something o…
由浅入深学SQL Server 2012 --> python开发中用到,定时操作.例如每隔1s执行一次,发现  threading.Timer,这个东西,可以直接用. 其原理为执行函数中置定时函数Timer(),递归调用自己,看来实现方法比较拙劣. import threading import time def fun_timer(): print("hello timer!") # 定义全局变量 global timer1 # 1秒调用函数一次 timer1 = threa…
Aspnet Zero使用Windows service (Topshelf)来承载Quartz.net任务 网上有很多关于如何使用Topshelf创建ABP的Quartz windows服务,但很少(没有)有介绍如何配合Aspnet Zero使用的文章,本文记录集成过程,以供参考. 在官方Aspnet Zero模板解决方案中建立Console类型的项目,并安装以下buget package: Topshelf Abp.Quartz Abp.Castle.Log4Net Abp.AspnetCo…
Windows Service 项目引用了别的类库项目,别的项目用到了 Entity Framework(通过Nuget引入),但是我的 Windows Service 无法开启,于是我修改了 App.config,加入 EF 的配置信息后能开启,但是业务代码无法进入,通过日志发现错误: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlPro…
前言:Microsoft Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面.这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用.还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务.本文就向大家介绍如何运用C#来创建.安装.卸载.调试Windows Service程序. 一.创建Windows服…
System.Threading.Timer 是C# 中的一个定时器,可以定时(不断循环)执行一个任务.它是在线程上执行的,具有很好的安全性.为此  .Net Framework 提供了5个重载的构造器方法.官网的文档是这样解释的: System.Threading.Timer 是一个简单. 轻型计时器,它使用回调方法,并由线程池线程提供服务. 但不建议使用 Windows 窗体,因为它的回调不会在用户界面线程上发生. System.Windows.Forms.Timer 是使用 Windows…
背景:        要学习使用一个新东西,我们必须知道他是个什么东西.对于我们此次研究的windows服务来说,他又是个什么东西,其实也没有什么高深的了. windows service概述: 一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序.Windows服务程序虽然是可执行的,但是它不像一般的可执行文件通过点击一下就直接可以运行,它有它特殊的启动方式.这些启动方式包括了自动启动和手动启动两种方式. 对于自动启动的Windows服务程序,它们在Windo…
Visual Studio.net 2010 Windows Service 开发,安装与调试 本示例完成一个每隔一分钟向C:\log.txt文件写入一条记录为例,讲述一个Windows Service 程序的开发,安装与调试     原程序,加文档示例下载 /Files/zycblog/SourceCode.rar 目录索引 1  开发工具 2  开发过程 3  安装 4  开发调试 5  注意事项 6  参考资料 1. 开发工具 1.1 Visual Stuo.net 2010 1.2 Wi…
写在前面 这几天在弄一个项目,需要定时抓取一些数据,当时也想直接用timer算了.因为之前也弄过这样的项目,但是一想,已经用过了,再去使用同一种思路,未免太乏味了.就换了一种新玩法.这里将之前看到的一篇文章中提出的一个思路,在这个项目中实践了一下,发现乐在其中. Quarzt.net [转]C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe 这篇文章,给了一种好玩的方式,并且自己也实践了一下,而且也确确实实在项目中用到了. 简单一个demo,先熟悉如…
前言:Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面.这种服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用.还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务. C#创建Windows服务的步骤: 1.创建Windows Service项目 从…