Pregunta

¿Es posible en una aplicación Compact Framework evitar que el recolector de basura detenga incondicionalmente al menos uno de los subprocesos, o bloquear las recolecciones de GC al menos en algunas partes del código?

Creo que tiene que ver con el establecimiento de prioridades en tiempo real, pero encontré muchos consejos en contra de hacerlo.

¿Fue útil?

Solución

El GC necesita congelar todos los hilos para inspeccionar todos los objetos. ¿Cómo podría hacer su trabajo, si algún hilo se está ejecutando y está modificando / creando un objeto?

Mejor no lo hagas.

Lo que puede hacer es invocar GC.Collect () y GC.WaitForPendingFinalizers () antes de ingresar en un estado en el que no desea ser interrumpido. Esto te dará algo de tiempo.

Otros consejos

El código no administrado no puede acceder a objetos administrados no anclados, pero se ejecutará sin bloqueo durante la recolección de basura. Si tiene ciertas rutinas que deben seguir ejecutándose durante la recolección de basura, y no requieren acceso a objetos administrados no anclados, podría escribir esas rutinas en código no administrado y el GC no las afectaría.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top