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();
}
アプリケーションのインスタンスを 1 つだけ同時に実行できるようにする必要があります。現在、Windows サービスと任意の数のコンソール アプリを同時に開始できます。アプリケーションが起動中に他のインスタンスを検出した場合、アプリケーションは終了する必要があります。
私はミューテックスベースのアプローチが本当に好きですが、これをTopShelfで機能させる方法がわかりません。