Task.Factory.StartNew führt die Aufgabe bei der Bereitstellung nicht aus

Ich habe hier Code, der wie erwartet funktioniert, wenn ich ihn auf meinem eigenen Computer, Windows 7, installiere / ausführe, aber wenn ich ihn auf anderen Servern (2003 und 2008) ausführe, funktioniert er nicht. Der Code stammt aus einer .NET4 WCF-Dienstbibliothek, die ich in einem Windows-Dienst verwende. Hier ist es vereinfacht.

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);
        }
      }
    }
      });
}

Die Threads sollten Schleifen eingeben, um etwas Arbeit zu erledigen. Der Hauptblock blockiert eine BlockingCollection. Jetzt werden beide Tasks erstellt, aber nur die zweite, und es wird nie "Neue Threadüberwachungswarteschlange" im Protokoll gedruckt. Ich kann nicht verstehen, warum nicht. Ich habe versucht, Remote-Debugging durchzuführen, aber da der Code nie eingegeben wird, konnte ich nichts Wertvolles erkennen.

Ich habe nichts gefunden, das das Verhalten des Codes auf dem bereitgestellten Server ändern könnte. Hat hier jemand eine Ahnung? Irgendwelche Einstellungen im Visual Studio-Projekt?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage