Em nosso primeiro artigo de 2013, irei falar um pouco sobre a Task Parallel Library(TPL), uma biblioteca de que veio para facilitar o emprego do paralelismo ou simultaneidade em nossas aplicacoes.Lancada como uma "feature" ainda no .NET 3.5, ela foi incorporada a versao 4.0 e esta disponivel no namespace System.Threading.Tasks.A programacao paralela e uma tecnica muito complicada de ser aplicada, e bibliotecas como a Task Parallel, simplifica e muito nossa vida.Parallel.ForO metodo estatico For e semelhante ao comando for, a diferenca e que o for tradicional, roda na "thread" principal a aplicacao, ja o Parallel.For roda em diversas "threads". Segue o exemplo:Se voce rodar o exemplo acima vai ver que o for tradicional supera o nosso For multitarefa, isso porque onde nao ha uma sobrecarga de processamento, nenhum ganho sera sentido.Colocando agora um pouco de sobrecarga nesse loop, veremos que o ganho de performance e assustador.O Parallel.For executou em 2 segundos, enquanto seu irmao convencional demorou nada menos que 10 segundos, ou seja, 80% mais rapido usando Parallel.For. Imagine isso em um cenario real e voce ira perceber o quanto e util essa biblioteca.Mas nem tudo sao flores, se o codigo rodar em um processador que nao possua multiplos "cores", pode ser que o metodo tradicional seja mais rapido. Ha tambem problemas em loops aninhados onde o loop interno seja muito pesado, nesse caso, utilize o Paralell.For apenas no loop externo.Para maiores informacoes, consulte a pagina da documentacao e obtenha maiores detalhes entre pros e contras sobre o uso da TPL.Abraco e ate a proxima. Nesse artigo iremos ver como trabalhar com o objeto DataSet, o principal componente da arquitetura ADO.NET. Como criar DataSet, DataTables, veremos tambem como preencher, pesquisar, salvar e carregar suas informacoes.O DataSet nada mais e, que uma representacao em memoria dos dados obtidos de uma origem de dados (banco de dados no geral). Ele consiste em uma colecao de objetos do tipo DataTable, que por sua vez, podem estar relacionados a outros objetos do tipo DataTable atraves do objeto DataRelation. E possivel tambem forcar a integridade, utilizando as classes UniqueConstraint e ForeignKeyConstraint.Criando nosso DataSetApesar de poderoso, o processo de criacao de um DataSet e muito simples conforme a imagem abaixo:Figura 1 - Criando a estrutura do DataTableVeja que logo apos a criacao do DataSet, foi criado um novo DataTable com 4 colunas. Em seguida, uma Constraint do tipo UniqueConstraint para definir nossa chave primaria.Manipulando os dados no DataSetPara manipular os dados em um DataSet, precisamos fazer uso das classes DataRow e DataRowCollecion.O primeiro, e uma representacao de uma linha em nosso DataTable, ja o segundo, e a colecao de DataRows que iremos manipular. Veja abaixo um exemplo de como preencher um DataTable com dados:Figura 2 - Preenchendo o DataTable com as informacoesA primeira coisa a ser feita, e localizar nosso DataTable (linha 70) dentro do DataSet, pois e ele que ira armazenar as informacoes.Agora precisamos chamar o metodo NewRow() (linha 74) do objeto DataTable que ira criar nosso DataRow para ser preenchido com as informacoes e adiciona-los a colecao Rows do DataTable (linha 78).Figura 3 - Exibicao do