Parallel.ForEach nie obraca nowych wątków

Parallel.ForEach Not Spinning Up New Threads

Witam wszystkich, mamy bardzo intensywną operację, którą napisaliśmy przy użyciu Parallel.ForEach z Microsoft Parallel Extensions dla .NET Framework. Musimy usunąć dużą liczbę plików i reprezentujemy pliki do usunięcia jako listę list. Każda zagnieżdżona lista zawiera 1000 wiadomości i mamy 50 z tych list. Problem polega na tym, że gdy patrzę później na logi, widzę tylko jeden wątek wykonujący się wewnątrz naszego bloku Parallel.ForEach.

Oto jak wygląda kod:

List<List<Message>> expiredMessagesLists = GetNestedListOfMessages();
foreach (List<Message> subList in expiredMessagesLists)
{
    Parallel.ForEach(subList, msg =>
    {
        try
        {
            Logger.LogEvent(TraceEventType.Information, "Purging Message {0} on Thread {1}", msg.MessageID, msg.ExtensionID, Thread.CurrentThread.Name);

            DeleteMessageFiles(msg);
        }
        catch (Exception ex)
        {
            Logger.LogException(TraceEventType.Error, ex);
        }
    });
}

Napisałem przykładowy kod z prostszą strukturą danych i bez logiki IO, i widziałem kilka różnych wątków wykonujących się w bloku Parallel.ForEach. Czy robimy coś niepoprawnego z Parallel.ForEach w powyższym kodzie? Czy może to być lista list, która go wyzwala, czy też istnieje jakiś rodzaj ograniczeń wątków dla operacji we / wy?

questionAnswers(2)

yourAnswerToTheQuestion