1、TopShelf 是一個開源的跨平台的宿主服務架構,支援Windows和Mono,隻需要幾行代碼就可以建構一個很友善使用的服務宿主。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()); //開始服務觸發 WriteTxtStart 函數
w.WhenStopped(tc => tc.WriteTxtStop()); //結束服務觸發 WriteTxtStop 函數
});
x.SetServiceName("TopShelfService1"); //服務名
x.SetDisplayName("TopShelfService1");//服務顯示名稱
x.SetInstanceName("TopShelfService1"); //服務顯示名稱後面的描叙
x.SetDescription("TopShelfService1 is Test Services"); // 服務描叙
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();//釋放記憶體
stream.Close();//釋放記憶體
}
else
{
FileStream stream = new FileStream(filePath, FileMode.Append);//再原有檔案中追加記錄,不覆寫
StreamWriter writer = new StreamWriter(stream, Encoding.Default);
writer.WriteLine(DateTime.Now.ToString() + ":Start Service");//寫入一行,寫完後會自動換行
writer.Close();//釋放記憶體
stream.Close();//釋放記憶體
}
}
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();//釋放記憶體
stream.Close();//釋放記憶體
}
else
{
FileStream stream = new FileStream(filePath, FileMode.Append);//再原有檔案中追加記錄,不覆寫
StreamWriter writer = new StreamWriter(stream, Encoding.Default);
writer.WriteLine(DateTime.Now.ToString() + ":Stop Service");//寫入一行,寫完後會自動換行
writer.Close();//釋放記憶體
stream.Close();//釋放記憶體
}
}
}
2、 安裝和解除安裝windows服務
TopShelfService.exe install #安裝Windows服務
TopShelfService.exe uninstall #解除安裝Windows服務
先找到檔案所在目錄指令, 安裝圖如下:
解除安裝: