1

ASP.Netプロセスのコンテキスト内でWPFを使用して画像のサイズを変更していますが、サイズ変更プロセスに大量の負荷をかけると、「操作が正常に完了しました」という例外が発生し、画像の変換が発生することがわかりました。失敗します。

4

1 に答える 1

2

これは、WPFがHWND(ウィンドウハンドル)のコンテキストで実行する必要があることが原因でした。WPF操作がウィンドウまたはアプリケーションのコンテキスト外で実行される場合、WPF操作は新しいものを作成Dispatcherし、プロセスでウィンドウハンドルを消費します。これらのハンドルは、.net GCの実行と同時に収集される必要はないため、リークが発生します。

これに対する解決策は、たとえば、単一のディスパッチャへの参照を取得し、Dispatcher.CurrentDispatcherそれをWPF操作を実行する必要があるすべてのメソッドに渡すことです。その後、ディスパッチャは実行するアクションを受け入れることができるため、次のように呼び出すことができます。_dispatcher.Invoke(() => ClassResizeMethod(image, size))

于 2012-11-12T22:38:08.510 に答える