前提・実現したいこと
レジストリのハードウェアアクセラレーションを無効にすることで、問題を回避できるので、アプリケーション側で
RenderModeを変更して、レジストリ値を変更したことと同じことをしたい。
発生している問題・エラーメッセージ
特定環境下でToolTip表示し続けるとOutOfMemoryエラーが出る。
該当のソースコード
window_LoadedでRenderModeを変更。window_Activatedで変更されているかログにて確認できる。
vb.Net3.5
1 2 Private Sub wWindowEx_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded 3 4 ohwndSource = CType(Interop.HwndSource.FromVisual(Me), HwndSource) 5 6 '描画時にレンダモードでHardWareモードを使わないように変更 7 ohwndSource.CompositionTarget.RenderMode = RenderMode.SoftwareOnly 8 9 '起動ログ出力 10 Try 11 OutPutLog(egLevel.INF, String.Format("{0}({1})起動", Me.ToString, Me.Title)) 12 OutPutLog(egLevel.INF, String.Format("RenderMode={0}", ohwndSource.CompositionTarget.RenderMode)) 13 14 Catch 15 End Try 16 17 End Sub 18 19 Private Sub wWindowEx_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated 20 'アクティブになったら出力 21 Try 22 cKSLogger.OutPutLog(egLevel.INF, String.Format("{0}({1})アクティブ", Me.ToString, Me.Title)) 23 24 If ohwndSource IsNot Nothing Then 25 '現在のRenderModeを出力 26 Dim hwndSource = CType(Interop.HwndSource.FromVisual(Me), HwndSource) 27 cKSLogger.OutPutLog(egLevel.INF, String.Format("RenderMode={0}", hwndSource.CompositionTarget.RenderMode)) 28 End If 29 Catch 30 End Try 31 End Sub 32
試したこと
VB.Net3.5sp1 wpfで開発をしています。
windows7やwindows10 32bitではどう問題は発生せず、Windows 10 Fall Creators 64Bit あたりから急に、OutOfMemoryで例外エラーで落ちるようになりました。
どうも、ToolTipを表示すると、ワーキングセットが増え続け、例外エラーで落ちるようです。簡単なサンプルを作り試しましたが、サンプルでは現象出せず。そこで、レジストリを変更しハードウェアアクセラレーションの無効化したところ、問題を回避できるようになった。
他のアプリに影響が出ないように、アプリケーション側で無効にしようとしたのですが、思い通りの動きをしません。
補足情報(FW/ツールのバージョンなど)
windows10 64Bit バージョン1709 OSビルド16299.334
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/08 06:56
2018/05/08 06:59
2018/05/08 07:13
2018/05/08 07:27
2018/05/08 08:33