ユースケース: WPF を使用して、Web コンテキスト内の画像にテキストを動的にオーバーレイしています。
解決策:元のビットマップとオーバーレイ テキストを描画するために、(ステートメントでラップされた) DrawingContext
from aを使用しています。DrawingVisual
using
問題: 数千回のリクエストの後、[DrawingVisual].RenderOpen()
メソッドは実行を拒否し始め、次の例外をスローします。
The system cannot find the file specified System.ComponentModel.Win32Exception UInt16 RegisterClassEx(WNDCLASSEX_D) at MS.Win32.UnsafeNativeMethods.RegisterClassEx(WNDCLASSEX_D wc_d)
at MS.Win32.HwndWrapper..ctor(Int32 classStyle, Int32 style, Int32 exStyle, Int32 x, Int32 y, Int32 width, Int32 height, String name, IntPtr parent, HwndWrapperHook[] hooks)
at System.Windows.Media.MediaContextNotificationWindow..ctor(MediaContext ownerMediaContext)
at System.Windows.Media.MediaContext..ctor(Dispatcher dispatcher)
at System.Windows.Media.MediaContext.From(Dispatcher dispatcher)
at System.Windows.Media.Visual.VerifyAPIReadWrite()
at System.Windows.Media.DrawingVisual.RenderOpen()
at ...
一時的な修正: これに対する唯一の修正は、サーバー上の IIS アプリケーション プールをリサイクルすることです。これにより、問題が数時間修正されます。
質問: この問題の原因 (リーク、スレッド化、アンマネージ コードなど) について考えている人はいますか? 描画ビジュアルを避けて画像にテキストを表示する他の方法はありますか? おそらく、ジオメトリをビットマップに書き込んで、ビットマップを直接オーバーレイしますか?