Class1自定义类 实现了IDisposable 接口主要资源对象占用如下
Dictionary<string,MemoryStream> Files=new Dictionary<string,MemoryStream>(20);
接口实现如下private bool IsDispose = false; /// <summary>
/// 释放所有占用的资源
/// </summary>
public void Dispose()
{
if (!IsDispose)
{
foreach (var v in files)
{
v.Value.Close();
v.Value.Dispose();
}
Files.Clear();
Files = null;
IsDispose = true;
}
}***************以上是定义********************************************以下是应用*********************
BackGroundWorker bgjob=new BackGroundWorker();
his.bgjob.WorkerReportsProgress = true;
....
bgjob.RunWorkerAsync();DoWork()
{
using(Class1 c1=new Class1())
{
执行一些操作
内存迅速涨到150-160M
}//此处使用using语句块 无效果内存仍然在 150M左右 GC.Collect();//此处调用GC默认 的东东 无效果}直到 bgjob 的Completed事件之后 内存仍让 居高不下,
调用多次则出现 内存继续上升 也就是说 我发现我的MemoryStream根本没有释放求指点
Dictionary<string,MemoryStream> Files=new Dictionary<string,MemoryStream>(20);
接口实现如下private bool IsDispose = false; /// <summary>
/// 释放所有占用的资源
/// </summary>
public void Dispose()
{
if (!IsDispose)
{
foreach (var v in files)
{
v.Value.Close();
v.Value.Dispose();
}
Files.Clear();
Files = null;
IsDispose = true;
}
}***************以上是定义********************************************以下是应用*********************
BackGroundWorker bgjob=new BackGroundWorker();
his.bgjob.WorkerReportsProgress = true;
....
bgjob.RunWorkerAsync();DoWork()
{
using(Class1 c1=new Class1())
{
执行一些操作
内存迅速涨到150-160M
}//此处使用using语句块 无效果内存仍然在 150M左右 GC.Collect();//此处调用GC默认 的东东 无效果}直到 bgjob 的Completed事件之后 内存仍让 居高不下,
调用多次则出现 内存继续上升 也就是说 我发现我的MemoryStream根本没有释放求指点
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货