我正在使用TopShelf來託管我的Windows服務。這是我的設置代碼:強制使用TopShelf服務的單個實例
static void Main(string[] args)
{
var host = HostFactory.New(x =>
{
x.Service<MyService>(s =>
{
s.ConstructUsing(name => new MyService());
s.WhenStarted(tc => tc.Start());
s.WhenStopped(tc => tc.Stop());
});
x.RunAsLocalSystem();
x.SetDescription(STR_ServiceDescription);
x.SetDisplayName(STR_ServiceDisplayName);
x.SetServiceName(STR_ServiceName);
});
host.Run();
}
我需要確保只有一個應用程序實例可以同時運行。目前,您可以同時將其作爲Windows服務和任意數量的控制檯應用程序啓動。如果應用程序在啓動期間檢測到其他實例,它應該退出
我真的很喜歡mutex的方法,但不知道如何使這與TopShelf合作。