Я сделал эту маленькую службу Windows в C #, и я думаю, что, возможно, я сделал что-то не так с моим кодом ThreadPool, который мешает моему Windows Service полностью запуститься. Если вы должны знать, что служба Windows, кажется, работает отлично только тогда, когда при взгляде на консоль служб она все еще заявляет, что она «запускается». Когда я перезапустил свой сервер, служба, кажется, снова остановилась, хотя я установил для нее автоматический запуск.
Пожалуйста, смотрите мой код ниже:
protected override void OnStart(string[] args)
{
int itemCount = itemList.Count;
this.doneEvents = new ManualResetEvent[itemCount];
for (int i = 0; i < itemCount; i++)
{
int oId = this.itemList[i];
this.doneEvents[i] = new ManualResetEvent(false);
ThreadPool.QueueUserWorkItem(data =>
{
while (this.activated)
{
DateTime start = DateTime.Now;
// my code here
// choke point
TimeSpan duration = (DateTime.Now - start);
if (duration.Milliseconds < CONST_WAITMILLISECONDS)
Thread.Sleep((CONST_WAITMILLISECONDS - duration.Milliseconds));
}
this.doneEvents[i].Set(); // thread done
}, oId);
}
WaitHandle.WaitAll(doneEvents);
}