アプリケーションを長く使用すると、より多くのメモリが消費されるため、アプリケーションが心配です。データベースからデータを取得するために、Silverlight 対応の WCF サービスを使用しています。アプリケーションについて説明します。DataGrid とframe
inがありますMainPage
。ユーザーがいくつかのデータを入力Search
し、ボタンをクリックした後、サービスはデータベースからデータを取得し、DataGrid に入力します。この後、ユーザーは行を選択し、アプリケーションは ViewModel からフレームの URI を次のように変更できます。
// Sending selectedId as Query string
FrameURI = new Uri(
string.Format("/Views/PersonDetails.xaml?SelectedID={0}",
SelectedID,
UriKind.Relative);
イベントで指定された ID を持つ人物のデータを取得しOnNavigatedTo
、Person 型のオブジェクトを返すメソッドを呼び出しています。
_id = this.NavigationContext.QueryString["SelectedID"];
if (_id != "")
{
Uri address = new Uri(Application.Current.Host.Source, "../UserServiceName.svc");
UserServiceNameClient client = new UserServiceNameClient("CustomBinding_UserServiceName", address.AbsolutePath);
client.GetPersonByIDCompleted += (sender, event) =>
{
if (e.Result.Name != null)
{
LayoutRoot.DataContext = (Person)e.Result;
}
};
client.GetPersonByIDAsync(_id);
}
しかし、問題はここにあります。DataGrid から新しい ID を選択した後、GC が起動していないようです。DataGrid で選択した行を変更した後、アプリケーションのメモリが増え続けます。そして、絵コンテ/アニメーションが遅くなります...
私はウェブでいくつかの投稿を読みましたが、そのうちのいくつかは、それについてevent handlers
です。私は何かを試しましたが、助けにはなりませんでした。
ありがとう。