Melhores práticas: OnDispose Override (bool disposing) vs evento Disposed no Component

StackOverflow https://stackoverflow.com/questions/456299

  •  19-08-2019
  •  | 
  •  

Pergunta

Na Net a classe Component expõe um evento Disposed. Ele também fornece uma OnDispose(bool disposing) membro protegido.

O que é a melhor prática para um componente personalizado que estende Component? Substituir OnDispose(bool) ou anexar um manipulador de eventos para Disposed em construção?

O meu sentimento é que se deve substituir OnDispose(bool) e selar a classe.

Os pensamentos?

Foi útil?

Solução

Normalmente os eventos são usados ??pelos consumidores para que eles possam ser notificado quando ocorrem eventos. Se você está estendendo o tipo e necessidade de limpar os recursos você deve substituir Dispose (bool disposing)

Spence é parcialmente certo sobre o manipulador de eventos, vários eventos podem ser atribuídos, mas a questão é que você não pode garantir a ordem em que os eventos são tratados.

Vedação da classe muitas vezes depende do que você está projetando.

A regra FxCop também tem algumas boas informações: http: //msdn.microsoft.com/en-us/library/ms244737(VS.80).aspx

Outras dicas

Eu recomendaria substituindo o comportamento, como um implementador do seu componente tem acesso ao manipulador de eventos e, como tal, poderia cancelar sua implementação triturador por acidente. Eu acredito que você também pode precisar de fazer isso, dependendo do que o seu componente personalizado está fazendo, como você pode precisar para executar o seu descarte tarefas antes de chamar para o triturador base se tiver objetos stateful ou interfaces externas etc.

Como eu já ouviu falar sobre este assunto é um padrão Net que classe base herdeiros override OnXxxxx métodos e usuários manipular eventos Xxxxx.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top