Articles of task parallel library

Iniciar tarefas no loop foreach usa o valor do último item

Eu estou fazendo uma primeira tentativa de jogar com as novas Tarefas, mas algo está acontecendo que eu não entendo. Primeiro, o código, que é bastante direto. Eu passo uma lista de caminhos para alguns arquivos de imagem e tento adicionar uma tarefa para processar cada um deles: public Boolean AddPictures(IList paths) { Boolean result […]

Parallel.ForEach pode causar uma exceção “Out of Memory” se estiver trabalhando com um enumerável com um object grande

Eu estou tentando migrar um database onde as imagens foram armazenadas no database para um registro no database apontando para um arquivo no disco rígido. Eu estava tentando usar Parallel.ForEach para acelerar o processo usando esse método para consultar os dados. No entanto, notei que estava recebendo uma exceção OutOfMemory . Eu sei que Parallel.ForEach […]

É Task.Factory.StartNew () garantido para usar outro segmento que o segmento de chamada?

Eu estou começando uma nova tarefa de uma function, mas eu não quero que ele seja executado no mesmo segmento. Eu não ligo para qual encadeamento ele é executado, contanto que seja diferente (então as informações dadas nesta questão não ajudam). Tenho certeza de que o código abaixo sempre sairá do TestLock antes de permitir […]

Quando deve TaskCompletionSource ser usado?

AFAIK, tudo o que sabe é que, em algum momento, seu método SetException ou SetException está sendo chamado para concluir a Task exposta por meio de sua propriedade Task . Em outras palavras, ele atua como o produtor de uma Task e sua conclusão. Eu vi aqui o exemplo: Se eu precisar de uma maneira […]

Aguardando várias tarefas com resultados diferentes

Eu tenho 3 tarefas: private async Task FeedCat() {} private async Task SellHouse() {} private async Task BuyCar() {} Todos precisam ser executados antes que meu código possa continuar e também preciso dos resultados de cada um deles. Nenhum dos resultados tem nada em comum entre si Como faço para ligar e esperar que as […]

Executar duas tarefas assíncronas em paralelo e coletar resultados no .NET 4.5

Eu tenho tentado por um tempo para obter algo que eu pensei que seria simples trabalhar com o .NET 4.5 Eu quero triggersr duas tarefas de longa duração ao mesmo tempo e recolher o resulta na melhor maneira C # 4.5 (RTM) O seguinte funciona, mas eu não gosto porque: Eu quero que o Sleep […]

Token de cancelamento no construtor de tarefas: por quê?

Determinados construtores System.Threading.Tasks.Task tomam um CancellationToken como um parâmetro: CancellationTokenSource source = new CancellationTokenSource(); Task t = new Task (/* method */, source.Token); O que me deixa perplexo é que não há como, de dentro do corpo do método, chegar ao token passado (por exemplo, nada como Task.CurrentTask.CancellationToken ). O token deve ser fornecido por […]

Como cancelar uma tarefa em espera?

Eu estou jogando com essas tarefas do Windows 8 WinRT e estou tentando cancelar uma tarefa usando o método abaixo, e funciona em algum ponto. O método CancelNotification é chamado, o que faz você pensar que a tarefa foi cancelada, mas no segundo plano a tarefa continua em execução e, depois de concluída, o status […]

Quando usar Task.Delay, quando usar Thread.Sleep?

Há boas regras para quando usar Task.Delay versus Thread.Sleep ? Especificamente, existe um valor mínimo para fornecer um para ser eficaz / eficiente sobre o outro? Por fim, como o Task.Delay causa a troca de contexto em uma máquina de estado async / await, existe uma sobrecarga de uso?

Qual é a diferença entre Task.Start / Wait e Async / Await?

Eu posso estar faltando alguma coisa, mas qual é a diferença entre fazer: public void MyMethod() { Task t = Task.Factory.StartNew(DoSomethingThatTakesTime); t.Wait(); UpdateLabelToSayItsComplete(); } public async void MyMethod() { var result = Task.Factory.StartNew(DoSomethingThatTakesTime); await result; UpdateLabelToSayItsComplete(); } private void DoSomethingThatTakesTime() { Thread.Sleep(10000); }