Posso impedir coletor de lixo de parar alguns dos meus tópicos?
-
08-07-2019 - |
Pergunta
É possível em um aplicativo Compact Framework para impedir que o coletor de lixo de incondicionalmente parar pelo menos um dos tópicos, ou para bloquear coleta GC, pelo menos em algumas partes do código?
Eu acho que tem que lidar com a definição de prioridades em tempo real, mas eu encontrei um monte de conselhos contra a fazê-lo.
Solução
O GC precisa congelar os tópicos, a fim de inspecionar todos os objetos. Como poderia fazer o seu trabalho, se algum segmento está sendo executado e está modificando / criar um objeto?
Melhor não fazê-lo.
O que você pode fazer thogh, é invocar GC.Collect () e GC.WaitForPendingFinalizers () antes de entrar em um estado onde você não quer ser interrompido. Isto vai dar-lhe algum tempo.
Outras dicas
código não gerenciado não é permitido o acesso unpinned gerido objetos, mas ele será executado sem bloquear durante a coleta de lixo. Se você tem certas rotinas que devem continuar funcionando durante coleta de lixo, e eles não precisam de acesso a objetos gerenciados soltos, você poderia escrever essas rotinas em código não gerenciado eo GC não iria afetá-los.