1

Silverlightアプリケーションでいくつかの問題に直面しています。

私のアプリケーションは画像マネージャーのように見えます。いくつかの画像を開いたり、編集したり、表示したりすることができます。

私の問題は、いくつかの画像を追加し、これらの画像を削除した後、これらの画像を追加する前に使用されていたのと同じ量にメモリが戻らないことです。これらの操作を繰り返しても(画像を追加し、これらの画像を削除した後)、メモリの増加は止まりません。

なぜそれが起こるのですか?

このシナリオを再現するための新しいSilverlight5プロジェクトを作成し、いくつかのコードをテストして、何が起こっているかを見つけてみます。

新しいプロジェクトには、StackPanelと次のアクションを備えた3つのボタンがあります。

1-StackPanelに1000個のボタンを追加します。

2-StackPanelのすべての子を削除します。

3-GC.Collectを呼び出します。

同じアクションを繰り返し呼び出します:add(1)、remove(2)、GC(3)を呼び出します

同じアクション(追加と削除)を数回繰り返した後。私は最初のアプリケーションと同じ結果を観察しましたが、メモリの増加が止まりません。GC.Collectを呼び出した後でも、メモリは解放されません。私は今何が起こっているのかわかりません。Silverlightのメモリリークの可能性はありますか?

4

1 に答える 1

0

あなたのPCは「タブレット」ですか?

コンピューターで自動化クライアントを実行している場合は、Silverlightの自動化が開始されます。最も一般的な存在:

  • タブレットPC入力サービス(つまり、すべての「タブレットのような」PC)
  • 自動テストツール
  • スクリーンリーダー(およびその他のアクセシビリティソフトウェア)

これにより、Silverlightは完全に混乱し、多くのバグが発生し、ほとんどの場合、すべてが狂ったようにリークします。

HTMLでこのパラメーターを設定して、自動化を無効にしました。

<param name="windowless" value="true" />

詳細については、Silverlight + MVVM +バインディング=メモリリークがありますか?

于 2012-06-23T21:44:36.197 に答える