Utilizando o evento OperationCompleted


Recentemente eu falei aqui sobre grande parte dos membros expostos pela classe OperationContext. Além de tudo aquilo que foi visto lá, ela ainda fornece um evento chamado OperationCompleted. Ao se vincular a este evento, você será notificado quando a operação corrente foi finalizada, e com isso, poderá executar algo customizado, como alguma notificação, log, calcular o tempo de execução da operação, etc.

Além disso, podemos utilizar este evento para a liberação de recursos que estão sendo utilizados pela classe/serviço. Quando os parâmetros de entrada ou o objeto de retorno (resultado) não implementar a Interface IDisposable, então utilizamos este evento para descartar esses recursos, assim como é exibido no código abaixo:

internal class Servico : IContrato
{
    private FileStream _fs;

    public void ExecutarTarefa()
    {
        OperationContext.Current.OperationCompleted += (o, e) =>
        {
            if (this._fs != null)
                this._fs.Dispose();
        }; 

        //faz uso de _fs.
    }
}

Anúncios

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s