ustaw priorytet dla Parallel.For loop

Ok, oto sytuacja: Mój główny / UI wątek (nazwijmy go Thread1) służy do pozyskiwania partii obrazów ze skanera dokumentów phsycial. Po pobraniu partii uruchamiany jest oddzielny wątek „tła” (nazwij go Thread2), aby przetworzyć i zapisać obrazy z tej partii.

Wątek2 (wątek „tła”) używa aParallel.For pętla, która redukuje czas przetwarzania / oszczędzania obrazu o 70% w stosunku do normalnegoFor pętla. Wydaje się jednak, że maksymalizuję wszystkie moje procesory, tak że Thread1 nie może rozpocząć pozyskiwania kolejnych obrazów do czasuParallel.For pętla się kończy.

Czy istnieje sposób na „ograniczenie” aParallel.For pętla, aby nie zmaksymalizować moich procesorów? Lub ustawić priorytet przetwarzania? Próbowałem ustawieniaThread2.Priority = ThreadPriority.Lowest, ale to nie wydaje się wpływać na pętlę. Albo nie rozumiem, jakParallel.For działa pętla? Czy w jakiś sposób blokuje Thread1?

Oto jak nazywam Thread2 z metody w Thread1.

public void SaveWithSettings(bool save) // method in Thread1
{
    ....
    Thread thr = new Thread(ThreadWork); // creating new thread (Thread 2)
    thr.Priority = ThreadPriority.Lowest; // does nothing?
    thr.Start(new SaveContainer(sc)); // pass a copy as paramater

    // misc stuff to make scanning possible again
    numBgw++;
    twain.RemoveAllImages(); // clear images
    imagelist.Clear(); // clear imagelist images
    .... // etc. this all appears to process fine while Thread2 is processing
}

Tutaj jest mójThreadWork metoda:

private void ThreadWork(object data) // executing in Thread2
{
    SaveContainer sc = data as SaveContainer; // holds images

    bool[] blankIndex = new bool[sc.imagelist.Count]; // to use in Parallel.For loop
    for (int i = 0; i < sc.imagelist.Count; i++)
        blankIndex[i] = false; // set default value to false (not blank)

    Parallel.For(0, sc.imagelist.Count, i => // loop to mark blank images
    {
        bool x = false; // local vars make loop more efficient
        x = sc.IsBlankImage((short)i); // check if image at index i is blank
        blankIndex[i] = x; // set if image is blank
    }
    .... // other image processing steps
}