L'opzione migliore è probabilmente quella di utilizzare un'espressione lambda che si chiude sopra le variabili che si desidera visualizzare.
Tuttavia, fare attenzione in questo caso, soprattutto se si sta chiamando in un ciclo. (Dico questo perché la tua variabile è un "ID", e questo è comune in questa situazione.) Se chiudi la variabile con l'ambito sbagliato, puoi ottenere un bug. Per dettagli, vedere Eric Lippert's post on the subject. Ciò richiede in genere fare una temporanea:
foreach(int id in myIdsToCheck)
{
int tempId = id; // Make a temporary here!
Task.Factory.StartNew(() => CheckFiles(tempId, theBlockingCollection),
cancelCheckFile.Token,
TaskCreationOptions.LongRunning,
TaskScheduler.Default);
}
Inoltre, se il codice è come il precedente, si deve fare attenzione con l'utilizzo del LongRunning
suggerimento - con lo scheduler di default, questo fa sì che ogni attività per ottenere il proprio thread dedicato invece di usare il ThreadPool. Se stai creando molte attività, è probabile che abbia un impatto negativo poiché non otterrai i vantaggi del ThreadPool. E 'tipicamente orientata per una singola, compito lungo in esecuzione (da cui il nome), non qualcosa che sarebbe stato implementato per lavorare su un elemento di una collezione, ecc
fonte
2011-11-14 20:09:03
Grazie. Li avvierò in un ciclo. Comunque ho bisogno di LongRunning. Il mio programma originale ha funzionato con un file, ma ora ha bisogno di fare del codice su numerosi file. Pertanto ho bisogno di passare l'ID, BlockingCollection, CancellationTokenSoure e StreamReader. Non ho aggiunto quei parametri di metodo aggiuntivi nella domanda tuttavia – Jon
@Jon: Assicurati di controllare l'ambito di questi oggetti ... Ho appena menzionato l'hint LongRunning come qualcosa da tenere in considerazione - dirò che raramente è una buona idea utilizzare LongRunning, specialmente in .NET 4, se si stanno iniziando molte attività (ad esempio: lavorare in un ciclo), poiché il threadpool fornirà in genere un comportamento migliore. –
Il ciclo è solo per iniziare le attività. Massimo di 4-6 – Jon