Windows phone 7 如何克服使用HttpWebRequest下载时内存过高的问题
在我的项目中,我使用HttpWebRequest下载提要。但当我下载时,当它们返回到以前的形式时,内存会增加而不是减少:Windows phone 7 如何克服使用HttpWebRequest下载时内存过高的问题,windows-phone-7,Windows Phone 7,在我的项目中,我使用HttpWebRequest下载提要。但当我下载时,当它们返回到以前的形式时,内存会增加而不是减少: #region RequestDataFromServer private void RequestDataFromServer(object o) { if (!string.IsNullOrEmpty(ServerUri)) { if (DownloadStatus == DownloadState.Downloading)
#region RequestDataFromServer
private void RequestDataFromServer(object o)
{
if (!string.IsNullOrEmpty(ServerUri))
{
if (DownloadStatus == DownloadState.Downloading)
return;
DownloadStatus = DownloadState.Downloading;
HttpWebRequest serverRequest = (HttpWebRequest)WebRequest.Create(ServerUri);
serverState = new ServerRequestUpdateState();
serverState.AsyncRequest = serverRequest;
IAsyncResult result =
(IAsyncResult)serverRequest.BeginGetResponse(new AsyncCallback(RequestResponse), serverState);
}
}
#endregion
#region RequestResponse
void RequestResponse(IAsyncResult asyncResult)
{
var offlineStream = IsolatedStorageSettings.ApplicationSettings;
serverState = (ServerRequestUpdateState)asyncResult.AsyncState;
HttpWebRequest serverRequest = (HttpWebRequest)serverState.AsyncRequest;
try
{
serverState.AsyncResponse = (HttpWebResponse)serverRequest.EndGetResponse(asyncResult);
if (serverState != null)
{
Stream stream = serverState.AsyncResponse.GetResponseStream();
if (stream != null && serverState.AsyncResponse.StatusCode == HttpStatusCode.OK)
{
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
DownloadStatus = DownloadState.FileReady;
if (serverState != null)
{
try
{
if (offlineStream.Contains("streamOffline"))
{
offlineStream["streamOffline"] = null;
offlineStream.Remove("streamOffline");
}
offlineStream.Add("streamOffline", stream);
if (onComplete != null)
onComplete.Invoke(this, DownloadStatus, IndexImg);
stream.Close();
stream.Dispose();
stream = null;
}
catch (Exception)
{ }
}
});
}
}
}
catch (WebException ex)
{
DownloadStatus = DownloadState.Error;
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
//if (onComplete != null)
// onComplete.Invoke(this, DownloadStatus, null, IndexImg);
});
}
catch (Exception)
{ }
finally
{
serverRequest = null;
}
}
#endregion
我以为我已经销毁了所有可以增加内存的东西,但内存仍然很高,我保存了我进入的Isostorage流,但它仍然没有减少。NET内存在您处理对象时不会减少。下次GC启动时,它会下降 阅读更多关于
如何确定内存高?为什么使用空的catch块?你吞下例外,也许有一个problem@lukas ! 非常感谢!我将回顾它,但为什么当我下载它时内存会增强,尽管我不得不取消所有操作