问题描述
客户抱怨以下组件的内存使用量不断增加。我该如何处理?
这就是 Resource
类的工作原理:
using System;
using System.Collections.Generic;
public class Resource : Idisposable
{
private List<string> tasks = new List<string>();
public int Id { get; private set; }
public IEnumerable<string> Tasks { get { return this.tasks; } }
public Resource(int id)
{
this.Id = id;
}
public void PerformTask(string task)
{
if (this.tasks == null)
throw new ObjectdisposedException(this.GetType().Name);
this.tasks.Add(task);
}
public void dispose()
{
this.tasks = null;
}
}
这是跑步类的工作方式
public class Runner
{
private readonly Dictionary<int,Resource> resources = new Dictionary<int,Resource>();
public IEnumerable<Resource> Resources { get { return this.resources.Values; } }
public Resource AcquireResource(int id)
{
Resource w = null;
if (!this.resources.TryGetValue(id,out w))
{
w = new Resource(id);
this.resources.Add(id,w);
}
return w;
}
public void ReleaseResource(int id)
{
Resource w = null;
if (!this.resources.TryGetValue(id,out w))
throw new ArgumentException();
w.dispose();
}
public static void Main(string[] args)
{
var d = new Runner();
d.AcquireResource(1).PerformTask("Task11");
d.AcquireResource(2).PerformTask("Task21");
Console.WriteLine(string.Join(",",d.AcquireResource(2).Tasks));
d.ReleaseResource(2);
d.AcquireResource(1).PerformTask("Task12");
Console.WriteLine(string.Join(",d.AcquireResource(1).Tasks));
d.ReleaseResource(1);
}
}
即使使用的资源应该由组件释放。这是我从互联网上得到的 - 我该如何处理这种情况?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)