我担心我的应用程序,因为我使用它的时间越长,它消耗的内存就越多。我正在使用支持Silverlight的WCF服务从数据库中检索数据。
让我解释一下这个应用。在frame
中有DataGrid和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
。我尝试了一些事情,但没有帮助。
感谢。