Em certos projectos é necessário que hajam múltiplas tarefas a executarem vários procedimentos ao mesmo tempo. Estas tarefas podem não ser sentidas pelo utilizador, como podem ser tarefas de grande dimensão (Ex: operações entre base de dados, acesso ao disco local, etc.) e que, de alguma forma, condicionam todas as outras tarefas, ficando estas pendentes da conclusão de uma para poderem prosseguir.
Portanto, quando queremos um
user-interface com bom desempenho e não pretendemos longas esperas com tais tarefas utilizamos um
backgroundworker. O
backgroundworker têm por fim executar tarefas demoradas de uma forma assíncrona em segundo plano (
background). Será criada uma
thread diferente da
thread criada na aplicação.