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);

我在OnNavigatedTo事件中获取具有给定 ID 的人的数据并调用返回具有 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