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服务
先找到文件所在目录命令, 安装图如下:
卸载: