標籤:des blog http 使用 os strong 檔案 io
本文轉載:http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html
b.利用組件Topshelf
本方式特點:代碼簡單,開源組件,Windows服務可運行多個執行個體
Topshelf是一個開源的跨平台的服務架構,支援Windows和Mono,只需要幾行代碼就可以構建一個很方便使用的服務. 官方網站:http://topshelf-project.com
第1步:引用程式集TopShelf.dll和log4net.dll
第2步:建立一個服務類MyClass,裡麵包含兩個方法Start和Stop,還包含一個定時器Timer,每隔5秒往文字檔中寫入字元
public class MyClass { readonly Timer _timer; private static readonly string FileName = Directory.GetCurrentDirectory ( ) + @"\" + "test.txt"; public MyClass ( ) { _timer = new Timer ( 5000 ) { AutoReset = true , Enabled = true }; _timer.Elapsed += delegate ( object sender , ElapsedEventArgs e ) { this.witre ( string.Format ( "Run DateTime {0}" , DateTime.Now ) ); }; } void witre ( string context ) { StreamWriter sw = File.AppendText ( FileName ); sw.WriteLine ( context ); sw.Flush ( ); sw.Close ( ); } public void Start ( ) { this.witre ( string.Format ( "Start DateTime {0}" , DateTime.Now ) ); } public void Stop ( ) { this.witre ( string.Format ( "Stop DateTime {0}" , DateTime.Now ) + Environment.NewLine ); } }
第3步:使用Topshelf宿主我們的服務,主要是Topshelf如何設定我們的服務的配置和啟動和停止的時候的方法調用
class Program { static void Main ( string [ ] args ) { HostFactory.Run ( x => { x.Service<MyClass> ( ( s ) => { s.SetServiceName ( "ser" ); s.ConstructUsing ( name => new MyClass ( ) ); s.WhenStarted ( ( t ) => t.Start ( ) ); s.WhenStopped ( ( t ) => t.Stop ( ) ); } ); x.RunAsLocalSystem ( ); //服務的描述 x.SetDescription ( "Topshelf_Description" ); //服務的顯示名稱 x.SetDisplayName ( "Topshelf_DisplayName" ); //服務名稱 x.SetServiceName ( "Topshelf_ServiceName" ); } ); } }
第4步: cmd命令
ConsoleApp_Topshelf.exe install (安裝Windows服務)
ConsoleApp_Topshelf.exe uninstall (卸載Windows服務)
代碼下載:http://files.cnblogs.com/aierong/ConsoleApp_Topshelf.rar
使用Topshelf建立Windows 服務
使用Topshelf建立Windows 服務簡要的介紹了建立Windows服務的另一種方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通過5個步驟詳細的介紹使用使用Topshelf建立Windows 服務。Topshelf是一個開源的跨平台的宿主服務架構,支援Windows和Mono,只需要幾行代碼就可以構建一個很方便使用的服務宿主。
參考文章:http://www.cnblogs.com/shanyou/archive/2009/11/24/1609862.html
http://www.cnblogs.com/shanyou/archive/2011/05/04/2037008.html