DISPOSE EM CLASSES

 Tópico anterior Próximo tópico Novo tópico

DISPOSE EM CLASSES

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#482064 - 02/06/2018 09:41:19

NOWLIGHTS
SUMARE
Cadast. em:Abril/2011


Só peço um pouco de paciência :) afinal Everyone has a chance

__________________________________
- Everyone has a chance


#482159 - 07/06/2018 23:02:31

CLEVERTON
SERRINHA
Cadast. em:Dezembro/2003


Membro da equipe

Última edição em 07/06/2018 23:05:04 por CLEVERTON

Deixa eu contar uma experiência  minha por não usar os blocos using ou o .Dispose() no tipo FORM

o meu form, toda vez que abria, carregava algumas imagens pequenas,
Os clientes começaram a relatar que quando "o expediente era muito cheio" o computador / sistema começava a travar.

Quando coloquei o pessoal da minha equipa para fazer testes de abre e fecha, eu notei que a cada abertura e fechamento de um determinado FORM o uso de memória aumentava em 15kb.

Resumo:
O computador fazia uso de toda memória ( geralmente de 2 a 4gb ) numa noite, e os IIS ficava lento e gerava um problema em cascata com a webservice que não encontrava recursos de Hardware.

Isso criou uma péssima impressão nos usuários do meu sistema de celular, aparentando que era o aplicativo que tava com problema, quando na verdade foi simplesmente a falta de
Using()   ou .Dispose()    no projeto WinForms

Depois que fiz isso, acabou o problema.

Inclusive, a muuuuuuito tempo atrás ( na época do VB6 ) eu publiquei uma dica falando sobre o NOTHING do VB6. e consegui fazer a proeza de repetir a mesma falha no .NET

é como o KERPLUNK falou, tem coisas, que tem que estudar com mais calma, abrir a mente. Porque senão vai ficar enxugando gelo a vida toda.







#482164 - 08/06/2018 09:53:06

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Blocos using, OOP, testes unitários, boas práticas, todas essas coisas não são para "código bonitinho", elas existem para que seus sistemas sejam seguros, eficientes e com o mínimo de falhas. Insisto em falar nisso porque vejo demais aqui no fórum gente simplesmente ignorando essas valiosíssimas práticas. E por esse motivo, desenvolvem um senso de comodismo, bloqueando a mente para qualquer coisa "nova" ou diferente, ficando em um ciclo de erro e repetição de erro sem perceber.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#482166 - 08/06/2018 11:02:31

LVFIOROT
SERRA
Cadast. em:Março/2012


Gostei muito desse trecho...

Citação:
:
Blocos using, OOP, testes unitários, boas práticas, todas essas coisas não são para "código bonitinho", elas existem para que seus sistemas sejam seguros, eficientes e com o mínimo de falhas. Insisto em falar nisso porque vejo demais aqui no fórum gente simplesmente ignorando essas valiosíssimas práticas. E por esse motivo, desenvolvem um senso de comodismo, bloqueando a mente para qualquer coisa "nova" ou diferente, ficando em um ciclo de erro e repetição de erro sem perceber.




#482203 - 11/06/2018 09:19:16

NOWLIGHTS
SUMARE
Cadast. em:Abril/2011


Então, eu uso em todas as minhas classes de conexão com banco de dados o bloco Using.. minhas conexões são em camadas, até então achava que using na classe que chamava o banco de dados bastava...

E outra duvida, digamos que tenho que referenciar uma classe diversas vezes em um form, seria a forma correta de instanciá-la globalmente ao invés de cada evento? ajudaria em desempenho? Ou se eu instanciá-la e toda vez usar o .Dispose() daria no mesmo?


Citação:
  O computador fazia uso de toda memória ( geralmente de 2 a 4gb ) numa noite

é isso que acontece no meu sistema, tem um controle dentro do outro que eu simplesmente dou um Controls.Clear() só que continua sendo executado um timer.

__________________________________
- Everyone has a chance


#482215 - 11/06/2018 14:15:29

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Se você implementa a interface IDisposable na sua classe, necessariamente você terá alguma funcionalidade no "destrutor" da classe. E por isso, você deveria usar blocos using nessa classe ao invés de chamar o método Dispose.

Se você está usando timer, procure alternativas, provavelmente existe uma. O timer é algo BEEEEEEM genérico e não deveria ser usado para qualquer coisa.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#482217 - 11/06/2018 14:24:52

NOWLIGHTS
SUMARE
Cadast. em:Abril/2011


Citação:
  Se você implementa a interface IDisposable na sua classe, necessariamente você terá alguma funcionalidade no "destrutor" da classe. E por isso, você deveria usar blocos using nessa classe ao invés de chamar o método Dispose.

Então minhas conexões ao bancos são todas usando o bloco Using. Quero saber se para implementar o iDispose tenho que colocar em todas as camadas da classe para instancia-las na framework


Citação:
  Se você está usando timer, procure alternativas, provavelmente existe uma. O timer é algo BEEEEEEM genérico e não deveria ser usado para qualquer coisa.

Então, eu preciso mostrar em um monitor as filas dos atendentes(E é contêiner dentro de contêiner), e é o único método a qual encontrei. Tem alguma sugestão?

__________________________________
- Everyone has a chance


#482218 - 11/06/2018 14:27:40

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Explique essa parte de filas dos atendentes...

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#482220 - 11/06/2018 15:08:25

NOWLIGHTS
SUMARE
Cadast. em:Abril/2011


Então, tenho um formulario onde tem um FlowLayoutPanel
Dentro desse Flow, gero dinamicamente UserControl (10..11 controles) dentro do UserControl (Cada UserControl representa um atendente) adiciono mais um user control (contendo os técnicos) e o UserControlUsuarios tem uma timer de 5 segundos que carrega no banco de dados os técnicos nas filas.

Os técnicos são setados pelos atendentes.

__________________________________
- Everyone has a chance


#482221 - 11/06/2018 15:13:04

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
O que queria saber é como é o fluxo da coisa. O usuário posta uma solicitação, um atendente define que técnico usar e atribui o técnico ao atendimento... dessa forma...

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por NOWLIGHTS em 20/06/2018 10:17:42