聊聊.Net如何實現(xiàn)Windows服務(wù)
本文轉(zhuǎn)載自微信公眾號「UP技術(shù)控」,作者conan5566。轉(zhuǎn)載本文請聯(lián)系UP技術(shù)控公眾號。
Topshelf 是一個開源的跨平臺的宿主服務(wù)框架,支持Windows和Mono,只需要幾行代碼就可以構(gòu)建一個很方便使用的服務(wù)宿主。
使用Topshelf可以非常方便的將一個C#控制臺程序部署成為一個Windows Service,使用它可以很方便的構(gòu)建跨平臺服務(wù)寄主,而在調(diào)試時直接以控制臺的形式運行即可,非常方便。
TopShelf 安裝不需要依賴 .net framework 框架中的 InstallUtil.exe 工具。
- static void Main(string[] args)
 - {
 - HostFactory.Run(x =>
 - {
 - x.UseAssemblyInfoForServiceInfo();
 - x.Service<WriteTxtClass>(w =>
 - {
 - w.ConstructUsing(name => new WriteTxtClass()); //使用 WriteTxtClass實體
 - w.WhenStarted(tc => tc.WriteTxtStart()); //開始服務(wù)觸發(fā) WriteTxtStart 函數(shù)
 - w.WhenStopped(tc => tc.WriteTxtStop()); //結(jié)束服務(wù)觸發(fā) WriteTxtStop 函數(shù)
 - });
 - x.SetServiceName("TopShelfService1"); //服務(wù)名
 - x.SetDisplayName("TopShelfService1");//服務(wù)顯示名稱
 - x.SetInstanceName("TopShelfService1"); //服務(wù)顯示名稱后面的描敘
 - x.SetDescription("TopShelfService1 is Test Services"); // 服務(wù)描敘
 - x.RunAsLocalSystem();
 - x.StartAutomatically();
 - });
 - }
 - public class WriteTxtClass
 - {
 - public void WriteTxtStart()
 - {
 - string filePath = AppDomain.CurrentDomain.BaseDirectory + "log\\test.txt";
 - if (!File.Exists(filePath))
 - {
 - FileStream stream = new FileStream(filePath, FileMode.Create);
 - StreamWriter writer = new StreamWriter(stream, Encoding.Default);
 - writer.WriteLine(DateTime.Now.ToString() + ":Start Service");//寫入一行,寫完后會自動換行
 - writer.Close();//釋放內(nèi)存
 - stream.Close();//釋放內(nèi)存
 - }
 - else
 - {
 - FileStream stream = new FileStream(filePath, FileMode.Append);//再原有文件中追加記錄,不覆蓋
 - StreamWriter writer = new StreamWriter(stream, Encoding.Default);
 - writer.WriteLine(DateTime.Now.ToString() + ":Start Service");//寫入一行,寫完后會自動換行
 - writer.Close();//釋放內(nèi)存
 - stream.Close();//釋放內(nèi)存
 - }
 - }
 - public void WriteTxtStop()
 - {
 - string filePath = AppDomain.CurrentDomain.BaseDirectory + "log\\test.txt";
 - if (!File.Exists(filePath))
 - {
 - FileStream stream = new FileStream(filePath, FileMode.Create);
 - StreamWriter writer = new StreamWriter(stream, Encoding.Default);
 - writer.WriteLine(DateTime.Now.ToString() + ":Stop Service");//寫入一行,寫完后會自動換行
 - writer.Close();//釋放內(nèi)存
 - stream.Close();//釋放內(nèi)存
 - }
 - else
 - {
 - FileStream stream = new FileStream(filePath, FileMode.Append);//再原有文件中追加記錄,不覆蓋
 - StreamWriter writer = new StreamWriter(stream, Encoding.Default);
 - writer.WriteLine(DateTime.Now.ToString() + ":Stop Service");//寫入一行,寫完后會自動換行
 - writer.Close();//釋放內(nèi)存
 - stream.Close();//釋放內(nèi)存
 - }
 - }
 - }
 
安裝和卸載windows服務(wù) TopShelfService.exe install
#安裝Windows服務(wù) TopShelfService.exe uninstall #卸載Windows服務(wù)















 
 
 












 
 
 
 