簡単なWindowsサービスを作成しましたが、起動しようとすると、次のメッセージが表示されてすぐにシャットダウンします。
ローカルコンピューターのConsumerServiceサービスが開始され、その後停止されました。一部のサービスは、他のサービスまたはプログラムで使用されていない場合、自動的に停止します。
以下は私が実行しようとしているサービスです:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
var servicesToRun = new ServiceBase[]
{
new ConsumerService()
};
ServiceBase.Run(servicesToRun);
}
}
public partial class ConsumerService : ServiceBase
{
private readonly MessageConsumer<ClickMessage> _messageconsumer;
private readonly SqlRepository _sqlrep;
private static Timer _timer;
public ConsumerService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
try
{
File.Create(@"c:\ErrorLog.txt");
WriteToFile("Has started : " + DateTime.UtcNow);
var t = new Timer(OnTimeEvent, null, 1000, 1000);
}
catch (Exception e)
{
WriteToFile("Error : " + e.Message);
}
}
private void OnTimeEvent(object state)
{
WriteToFile("The time is : " + DateTime.UtcNow);
}
protected override void OnStop()
{
WriteToFile("Has stopped : " + DateTime.UtcNow);
}
private static void WriteToFile(string s)
{
var stream = File.AppendText(@"c:\ErrorLog.txt");
stream.WriteLine(s);
}
}
ご覧のとおり、1秒ごとにファイルに行を書き込むのは単純なタイマーにすぎないため、これによってサービスの実行が妨げられる理由に戸惑います。また、Windowsからのメッセージがこのサービスにどのように関連しているかを確認するのも困難です。これは、何かがすでに依存している場合を除いて、サービスの実行を妨げるためです。