Só estou me perguntando se a nova classe Task no dot.net 4 está criando um segmento de plano de fundo ou primeiro plano?
Normalmente, eu definiria "IsBackground" em um Thread, mas não existe tal atributo em uma Tarefa.
Não consegui encontrar nenhuma documentação sobre isso no MSDN :-(
Se você está começando a
Task<T>
usarTask.Run()
, sim.Se você estiver usando
async
eawait
, não. Trecho daqui :"As palavras-chave async e await não causam a criação de threads adicionais. Os métodos assíncronos não exigem multithreading porque um método assíncrono não é executado em seu próprio thread. O método é executado no contexto de sincronização atual e usa o tempo no thread apenas quando o método está ativo. Você pode usar Task.Run para mover o trabalho vinculado à CPU para um thread em segundo plano, mas um thread em segundo plano não ajuda com um processo que está apenas esperando os resultados ficarem disponíveis. "
fonte
Parece ser executado como um thread de segundo plano.
Veja este tópico:
Executando várias tarefas assíncronas em C #
fonte
As tarefas são executadas por threads que vêm do pool de threads do sistema. Um thread que vem do pool de threads é executado em segundo plano por padrão.
fonte
Se você ainda não está convencido de uma tarefa em segundo plano, tente acessar um elemento da GUI de dentro de uma tarefa como:
public async Task<int> ProcessStuff_Async() { while(true) { label1.Text = "processing next item";
para obter a exceção de tempo de execução:
assim como os bons e velhos tópicos regulares de fundo.
Há informações nos documentos do MSDN (em 2017 :-), por exemplo:
Este documento ainda tem uma seção
What happens under the covers
.fonte