Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

171
Vistas
Fuga de memoria WPF TextBlock al usar fuente

Estoy usando .NET 4.5 en Windows 7 y podría encontrar una pérdida de memoria.
Tengo un TextBlock (no TextBox , no es el problema Deshacer), que cambia su valor cada segundo (uso de CPU, tiempo, etc.).
Usando .NET Memory Profiler (y simplemente mirando el administrador de tareas) noté que la memoria sigue creciendo. Para ser más precisos, veo más y más instancias en vivo de UnmanagedMemoryStream (probé GC.Collect() que obviamente no hizo nada).

Después de algunas pruebas, descubrí que este problema aparece solo cuando configuro la fuente TextBlock en una fuente de recursos de la siguiente manera:

 <Style TargetType="{x:Type TextBlock}"> <Setter Property="Control.Foreground" Value="#CCCCCC"/> <Setter Property="FontFamily" Value="pack://application:,,,/MyUIControls;component/./Fonts/#Noto Sans"/> </Style>

Intenté actualizar la propiedad Text directamente desde el código o mediante Binding, se comporta de la misma manera en ambos sentidos.

Línea de fondo:
Cuando se establece FontFamily , las instancias de UnmanagedMemoryStream siguen llegando (para siempre) cada vez que actualizo el texto. Cuando no lo hago (configuro la propiedad FontFamily ), la memoria es estable.
(Por cierto, sucede cuando uso Label en lugar de TextBlock también)

Parece una pérdida de memoria, pero no pude encontrar ninguna referencia al respecto.
¿Alguna sugerencia de cómo se puede solucionar?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Una FontFamily UnmanagedMemoryStreams se usa si se obtuvo de un recurso incrustado o una ruta relativa. Cuando FontFamily proviene de una fuente del sistema o una ruta absoluta, no se filtra.

Puedes mirar aquí y descargar el proyecto que reproduce el problema.

Solución alternativa : para fuentes de recursos: guarde las fuentes en una carpeta temporal y use la ruta absoluta a la fuente almacenada. Para fuentes de ruta relativa: resuelva y use la ruta absoluta en su lugar.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda