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.

Foi útil?

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.

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