Task.Factory.StartNew не выполняет задачу при развертывании
У меня есть некоторый код, который работает, как и ожидалось, когда я его устанавливаю / запускаю на своем собственном компьютере, Windows 7, но когда я запускаю его на других серверах (2003 и 2008), это не так. Код взят из библиотеки .NET4 WCF Service, которую я использую в службе Windows. Вот оно, упрощенно.
public void monitorQueueAndDoStuff() {
MonitorRetryQueue();
MonitorMainQueue();
}
private void MonitorMainQueue() {
Log.Info("MonitorMainQueue called");
Task.Factory.StartNew(() =>
{
Log.Info("new thread monitoring queue");
// ...NMS stuff
while (!stopped) {
ITextMessage mess = null;
mess = blockingMessageCollection.Take();
sendToQueue(mess);
}
}
}
});
}
private void MonitorRetryQueue() {
Task.Factory.StartNew(() =>
{
//...NMS stuff
consumer.Listener += new MessageListener(OnRetryErrorMessage);
Log.Info("new thread monitoring second queue");
//need to be constantly up for the consumer to hang around
while (!stopped) {
Thread.Sleep(1000);
}
}
}
});
}
Потоки должны войти в циклы, чтобы сделать некоторую работу. Основной блок блокируется на BlockingCollection. Теперь он создает обе задачи, но входит только во вторую, он никогда не печатает & quot; новую очередь мониторинга потоков & quot; в журнале. Я не могу понять, почему нет. Я пробовал удаленную отладку, но так как она никогда не входит в код, я не смог ничего увидеть.
Я не нашел ничего, что могло бы изменить поведение кода на развернутом сервере. У кого-нибудь есть подсказка? Какие-либо настройки в проекте Visual Studio?