关于 TopShelf
Topshelf is a framework for hosting services written using the .NET framework. The creation of services is simplified, allowing developers to create a simple console application that can be installed as a service using Topshelf. The reason for this is simple: It is far easier to debug a console application than a service. And once the application is tested and ready for production, Topshelf makes it easy to install the application as a service.
示例
第一步:新建一个 C# 控制台应用程序。
第二步:用 Nuget 引用 TopShelf 和 Log4net。
第三步:贴出下面的代码。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Timers; using Topshelf; using Topshelf.Builders; using Topshelf.Configurators; using Topshelf.HostConfigurators; namespace TopshelfStudy { public sealed class TimeReporter { private readonly Timer _timer; public TimeReporter() { _timer = new Timer(1000) { AutoReset = true }; _timer.Elapsed += (sender, eventArgs) => Console.WriteLine("当前时间:{0}", DateTime.Now); } public void Start() { _timer.Start(); } public void Stop() { _timer.Stop(); } } class Program { static void Main(string[] args) { HostFactory.Run(x => { x.Service<TimeReporter>(s => { s.ConstructUsing(settings => new TimeReporter()); s.WhenStarted(tr => tr.Start()); s.WhenStopped(tr => tr.Stop()); }); x.RunAsLocalSystem(); x.SetDescription("定时报告时间"); x.SetDisplayName("时间报告器"); x.SetServiceName("TimeReporter"); }); } } }
第四步:编译、Release 生成。把 Release 文件夹 Copy 到 C 盘。
第五步:以管理员身份运行 cmd,安装、启动。
SampleWindowsService.exe install
启动
SampleWindowsService.exe start
如果要卸载也很方便
SampleWindowsService.exe uninstall
效果如下:
最后 Windows Service 没有 Console.WriteLine,我们可以把输出信息输出到文件。
StreamWriter sw = new StreamWriter("e:\\temp\\log.log"); sw.AutoFlush = true; Console.SetOut(sw);
参考网站:
http://www.cnblogs.com/shanyou/archive/2011/05/04/2037008.html
http://www.cnblogs.com/happyframework/p/3601995.html
http://www.cnblogs.com/chenxizhang/archive/2010/04/21/1716773.html
谢谢浏览!