Prevenir la recolección de basura .NET por un corto período de tiempo

Tengo una aplicación de alto rendimiento que maneja una gran cantidad de datos. Está recibiendo, analizando y descartando enormes cantidades de información durante períodos muy cortos de tiempo. Esto causa una cantidad considerable de rotación de objetos que actualmente estoy tratando de optimizar, pero también causa un problema secundario. Cuando la recolección de basura se activa, puede causar algunos retrasos prolongados, ya que limpia las cosas (quiero decir entre 10 y 100 segundos de milisegundos). El 99% de las veces esto es aceptable, pero durante breves períodos de tiempo de aproximadamente 1-2 minutos, necesito estar absolutamente seguro de que la recolección de basura no causa un retraso. Sé cuándo ocurrirán estos períodos de tiempo de antemano y solo necesito una forma de asegurarme de que la recolección de basura no ocurra durante este período. La aplicación está escrita en C # usando .NET 4.0 Framework y usa código administrado y no administrado si eso es importante.

Mis preguntas son;

Es posible pausar brevemente la Recolección de basura para todo el programa? ¿Es posible usar System.GC.Collect () para forzar la recolección de basura antes de la ventana que necesito libre de Recolección de basura y si lo hago, ¿cuánto tiempo estaré libre de recolección de basura? ¿Qué consejo tienen las personas para minimizar la necesidad de recolección de basura en general?

Nota: este sistema es bastante complejo con muchos componentes diferentes. Espero evitar ir a un enfoque en el que tenga que implementar una interfaz IDisposable personalizada en cada clase del programa.

Respuestas a la pregunta(2)

Su respuesta a la pregunta