Os eventos são carregados e executados na thread principal, e se o primeiro evento na thread principal não for concluído, você chega ao segundo evento, assim como outros programas na thread principal, espera que o anterior termine o processamento antes de processar o próximo ou outro programa ou evento na thread principal.
O que foi dito acima é: eu mesmo encapsulei um objeto, e no objeto, eu mesmo encapsulei um evento.
Eu processo dados no método de assinatura de eventos, como a parte da anotação de imagens,
Porque o evento ao qual me assinei era um arquivo txt de leitura, e meu arquivo txt tinha 50.000 linhas, fazendo com que o método do evento fosse acionado 50.000 vezes.
Então, quando executei o programa, percebi que minha interface estava em estado de animação suspensa, e soube que devia haver um problema ali.
Inicialmente achei que era a manipulação dos controles da interface no método que causava a morte falsa.
Depois, passo a passo, descobriu-se que, ao adicionar dados ao conjunto, ele já havia entrado em um estado de animação suspensa.
Por quê??? Finalmente, descobri pela internet que o evento está no tópico principal e, se o primeiro evento não for processado, ele bloqueará a execução do próximo evento,
Eu geralmente entendia o que ordenava, para ser franco, 50.000 eventos fizeram o programa ser bloqueado, e então entrei em um estado de animação suspensa.
Solução:
Para alguns eventos simples, que não levarão à execução de um grande número de métodos de eventos, podem ser escritos diretamente no método de eventos.
Para um grande número de métodos de eventos chamados, espero que você abra uma thread para lidar com isso, como: socket ou httplistener, etc. (a quantidade de dados é pequena e você não consegue vê-la, quando a quantidade de dados é grande, haha, ela morrerá diretamente)
|