Articles of task parallel library

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