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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top