我担心我的应用程序,因为我使用它的时间越长,它消耗的内存就越多。我正在使用启用 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);
我在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
. 我尝试了一些东西,但没有帮助。
谢谢。