Existe uma .Net equivalente a java.util.concurrent.Executor?
-
06-09-2019 - |
Pergunta
Tenha um conjunto de longa execução de tarefas distintas: análise 10s de milhares de linhas de um arquivo de texto, hidratando em objetos, manipular e persistência.
Se eu fosse implementar isso em Java, acho que eu poderia acrescentar uma nova tarefa a um Executor para cada linha no arquivo ou tarefa por X linhas (ou seja, blocos).
Para Net, que é o que eu estou usando, eu não tenho tanta certeza. Eu tenho uma suspeita talvez CCR pode ser apropriado aqui, mas eu não sou suficientemente familiarizado com ele, que é por isso que eu colocar esta questão.
A função pode CCR de uma forma equivalente ao Java executores, ou há algo mais disponíveis?
Graças
Solução
Você pode querer olhar para o Task paralelo Biblioteca.
A partir de C # 5 este é construído para a língua usando as palavras-chave async
e await
.
Outras dicas
Se você estiver indo para pedir um monte de .NET pessoas o que está mais próximo de ser equivalente ao Java Excecutors, pode não ferir a descrever as características distintivas do Java executores. A pessoa que conhece a sua resposta não pode ser qualquer mais familiarizados com Java que você está com .NET.
Dito isto, se o já mencionado biblioteca paralela de tarefas é um exagero para as suas necessidades, ou você não quiser esperar para .NET 4.0, talvez ThreadPool.QueueUserWorkItem () seria o que você está procurando.
Talvez esta seja relacionada: projetar: biblioteca paralela de tarefas explorado . Consulte 10-4 Episódio 6: Extensões Paralelas como uma introdução rápida.
Para abordagem mais velho baseada em threads, há ThreadPool para pooling.
A classe BackgroundWorker é provavelmente o que você está procurando. Como o nome sugere, ele permite que você execute tarefas em segundo plano, com pooling gerenciados automaticamente, e eventos de atualização de status.
Para quem procura uma solução mais contemporânea (como eu estava), confira o EventLoopScheduler classe.