Моя служба Windows может запускать потоки (в соответствии с делегатом ThreadStart) в Win XP, но в Win 2003 Server она не может, и не выдает исключение ... поток просто не запускается.
Я сделал тестовую Службу Windows, которая имеет одинаковый код в обработчике событий (OnStart), и она работала как на Win XP, так и на Win 2003 Server, что сводит меня с ума, я не знаю, что не так с моей исходной службой почему это не может начать поток.
вот код как в моем Win Service с проблемой, так и в тестирующем Win Service, который работал просто отлично:
private Thread trd;
StreamWriter sw;
int i = 0;
protected override void OnStart(string[] args)
{
// TODO: Add code here to start your service.
sw = new StreamWriter("c:\\TestingService.txt", true);
trd = new Thread(new ThreadStart(this.LoopingThread));
trd.IsBackground = false;
trd.Priority = ThreadPriority.Highest;
trd.Start();
}
protected override void OnStop()
{
// TODO: Add code here to perform any tear-down necessary to stop your service.
}
private void LoopingThread()
{
while (i < 100)
{
lock (sw)
{
sw.WriteLine("hello from thread i="+i.ToString());
sw.Flush();
}
i++;
Thread.Sleep(1000);
}
}
этот код "точно" идентичен на обоих сервисах Win.
мой оригинальный сервис (у которого есть проблема) получил много ссылок на другие библиотеки DLL, и его список «Использование»:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.IO;
using System.Xml;
using System.Security.Principal;
using System.Reflection;
using System.Threading;
using System.Management;
и другие операторы использования, относящиеся к некоторым конфиденциальным DLL (сторонние организации)
но на самом деле я не создаю никакой объект ... эффективный код - это то, что я опубликовал.
Я не могу понять, почему моя служба Win не может запускать потоки на Win 2003 Server