如何为wcf ria服务调用释放内存?

时间:2012-09-28 19:24:27

标签: c# wcf-ria-services silverlight-5.0

我有一个以静态方法提供服务的Silverlight应用程序的代码:

public static void mymethod(){
DomainContext context = new DomainContext();
var q = context.GetMyEntitiesQuery().Where(x => x.Name == name );
context.Load<MyEntity>(q, LoadBehavior.RefreshCurrent,
  (p) =>
  {
  if (!p.HasError)
    {
     //......     
    }

  }, null);
}

工作正常。但每当我调用这种方法时,对于浏览器进程,内存将增加约3M,并且它永远不会被释放。

如何为这种情况释放内存?

1 个答案:

答案 0 :(得分:0)

您应该尽可能少的DomainContext实例。也许从调用者传递上下文

Thing.mymethod(context);

或保留静态实例

public static class Thing
{
    DomainContext _Context = new DomainContext();

    public static void mymethod()
    {
        var q = _context.GetMyEntitiesQuery().Where(x => x.Name == name );
        ...
    }
}

您创建的每个实例都可能会粘在一起并造成内存泄漏。