Task.Factory.StartNew не выполняет задачу при развертывании

У меня здесь есть некоторый код, который работает, как и ожидалось, когда я устанавливаю/запускаю его на своем собственном компьютере, Windows 7, но когда я запускаю его на других серверах (2003 и 2008 ), он не работает. Код взят из библиотеки служб.NET4 WCF, которую я использую в службе 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. Теперь он создает обе задачи, но входит только во вторую и никогда не печатает в журнале «новую очередь мониторинга потоков». Я не могу понять, почему нет. Я попробовал удаленную отладку, но, поскольку она никогда не вводит код, я не увидел ничего ценного.

Я не нашел ничего, что могло бы изменить поведение кода на развернутом сервере. Кто-нибудь здесь может иметь ключ? Любые настройки в проекте Visual Studio?

5
задан svick 5 September 2012 в 23:37
поделиться