0

アプリケーションを長く使用すると、より多くのメモリが消費されるため、アプリケーションが心配です。データベースからデータを取得するために、Silverlight 対応の WCF サービスを使用しています。アプリケーションについて説明します。DataGrid とframeinがあります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です。私は何かを試しましたが、助けにはなりませんでした。

ありがとう。

4

0 に答える 0