Articles of task parallel library

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); }

Parallel.ForEach vs Task.Factory.StartNew

Qual é a diferença entre os trechos de código abaixo? Ambos não estarão usando threads de pool de threads? Por exemplo, se eu quiser chamar uma function para cada item de uma coleção, Parallel.ForEach(items, item => DoSomething(item)); vs foreach(var item in items) { Task.Factory.StartNew(() => DoSomething(item)); }

WaitAll vs WhenAll

Qual é a diferença entre Task.WaitAll() e Task.WhenAll() do CTP Async? Você pode fornecer algum código de exemplo para ilustrar os diferentes casos de uso?

Captura uma exceção lançada por um método asynchronous

Usando o CTP asynchronous da Microsoft para .NET, é possível detectar uma exceção lançada por um método asynchronous no método de chamada? public async void Foo() { var x = await DoSomethingAsync(); /* Handle the result, but sometimes an exception might be thrown. For example, DoSomethingAsync gets data from the network and the data is […]

Manipulador de exceção global TAP

Este código lança uma exceção. É possível definir um manipulador global de aplicativos que o capture? string x = await DoSomethingAsync(); Usando o .net 4.5 / WPF