Un client a signalé que notre logiciel se bloque lorsqu'il l'exécute sur l'un de ses ordinateurs. Nous avons réduit le problème à rendre le texte avec FormattedText et mis en place une application simple pour lui d'essayer, ce qui rend juste du texte avec des paramètres de police différents - cela serait également suspendu..NET: le texte de dessin se bloque - Bogue FormattedText?
est ici le bit de code qui fait le dessin de texte actuel:
Typeface typeface = new Typeface(m_Font, m_FontStyle, m_FontWeight, FontStretches.Normal);
FormattedText ftext = new FormattedText(m_Text, new CultureInfo("en-US"), FlowDirection.LeftToRight, typeface, m_FontSize, m_FontColor);
ftext.TextAlignment = CenterText ? TextAlignment.Center : TextAlignment.Left;
if (m_DrawOutline)
{
Geometry geom = ftext.BuildGeometry(CenterText ? new Point(ftext.Width, 0) : new Point());
dc.DrawGeometry(m_FontColor, DrawOutline ? new Pen(m_OutlineColor, m_OutlineWidth) : null, geom);
}
else
dc.DrawText(ftext, CenterText ? new Point(ftext.Width, 0) : new Point());
Le programme arrête simplement de répondre à chaque fois que les méthodes ftext.BuildGeometry, dx.DrawText ou la propriété ftext.Width est appelée, quelle que soit la police et les paramètres de texte utilisés. Cela se produit uniquement sur un ordinateur, qui est un ordinateur portable à écran tactile (pas sûr que cela soit pertinent) fonctionnant sous Windows 7. Nous avons déjà essayé de réinstaller le .NET Framework mais cela n'a pas aidé.
Est-ce que quelqu'un a rencontré un problème similaire? Des idées pour résoudre, contourner ou au moins en savoir plus sur la raison de ce problème?
Merci.
Avez-vous essayé la mise à jour/déclasser le pilote de carte graphique? Pour être sûr de ce qui est exactement le coupable obtenir la pile à partir d'un débogueur ou un explorateur de processus. Si vous vous retrouvez coincé dans le pilote, c'est du matériel ou du logiciel, mais vous ne pouvez rien résoudre directement de toute façon. Si c'est dans DirectX ou le noyau ... je ne sais pas peut-être contacter un support de micsosoft via MSDN. –