MemoryCache

Disponível desde a versão 4 do .NET Framework, a classe MemoryCache funciona de maneira similar ao cache do ASP.NET, exceto pelo fato de que a classe MemoryCache foi criada para ser utilizada em qualquer tipo de aplicação .NET, não apenas em aplicações ASP.NET.

Outra vantagem da classe MemoryCache é que ela é thread safe. Essa característica assegura o seu uso em operações assíncronas, operações executadas paralelamente e acessos originados de diferentes threads.

Leia mais »

Visual Studio Online – Configurando o envio de alertas por e-mail

É possível configurar o disparo de e-mails por meio de alertas de eventos ocorridos em seus projetos do Visual Studio Online (http://www.visualstudio.com/products/visual-studio-online-overview-vs). Desta forma, sempre que um tipo de ação ocorrer sobre os seus projetos você pode ser notificado por e-mail no mesmo instante.

Leia mais »

AppDomain.FirstChanceException

Depois que uma exception é lançada o CLR começa uma busca no call stack por um bloco que faça o tratamento dessa exception.

O AppDomain.FirstChanceException é um evento que ocorre antes do CLR começar a procurar no call stack por um ponto da aplicação que faz o tratamento dessa exception, isto é, antes da exception ser tratada este evento é acionado.

Este evento funciona como um notificador, não afetando a exception ou cancelando o seu disparo. 

Leia mais »

Como criar botões customizados para o Kinect for Windows

A criação de botões customizados para o Kinect for Windows é bastante simples de ser feita. Para tanto faremos uso de recursos nativos do WPF, orientação a objetos e o Kinect for Windows Developer Toolkit.

Por padrão, o Windows Developer Toolkit contém dois modelos de botões: o KinectTileButton e o KinectCircleButton. O KinectTileButton geralmente é utilizado para navegação entre páginas, enquanto que o KinectCircleButton é utilizado para execução de ações e barras de ferramentas.

TV com Kinect

Leia mais »

Redimensão de imagens (C# + WPF + MVVM + Asynchronism + Comentários)

Redimensão de imagens é uma tarefa comum do dia-a-dia para quem trabalha com computadores. Redimensionamos imagens em tarefas do trabalho, lazer, e do cotidiano. Esta é uma tarefa que pode ser executada facilmente com um editor de imagens, mas é bastante custosa quando queremos redimensionar um conjunto de imagens.

Por conta do trabalho (e tempo) gasto com a redimensão de múltiplas imagens, e pela vontade de não depender da instalação de nenhum editor de imagens, acabei por criar um programa que faz essa redimensão em massa. Fiz isso quatro anos atrás e, como o programa se tornou “popular” entre amigos e familiares, percebi que era preciso fazer uma nova versão com tecnologias mais novas.

app-resizeme-512

Leia mais »

Foreground threads e Background threads

O CLR considera que existem dois tipos de threads: foreground e background threads.

Foreground threads executam com uma prioridade elevada. Esse tipo de thread evita que a aplicação se encerre antes que tenham executado todo o seu trabalho.

Em contraponto, as background threads não são executadas com prioridade elevada. Background threads são finalizada imediatamente pelo CLR assim que todas as foreground threads de uma aplicação (leia managed assembly) encerram sua execução, sem lançar nenhuma exceção.

Leia mais »

Delegate Chain Invocation

Callback functions são blocos de código executável que são passados como parâmetro para outro código, que fica responsável por invocá-los quando apropriado.

O modo como callback functions são suportados em cada linguagem de programação é diferente, mas são frequentemente implementados como subrotinas, expressões lambdas ou ponteiros de função.

O tratamento das linguagens não-gerenciadas sobre os callback functions é limitada a apenas um endereço de memória. Este endereço de memória não contém nenhuma informação adicional sobre o tipo de retorno, o número de parâmetros ou os tipos de dados dos parâmetros.

Leia mais »

Sobreposição de objetos com Javascript

Com o aumento da quantidade de funcionalidades construídas com Javascript novos requisitos surgem a cada dia. Requisitos que antes não eram tão comuns (como a manipulação/movimentação de objetos gráficos em um browser) tornam-se triviais, pois aumentam a usabilidade da aplicação tornando o seu uso fácil, agradável, rápido e de fácil assimilação.

O exemplo abaixo demonstra como é possível identificar a sobreposição de objetos HTML utilizando código Javascript.

Leia mais »