0

静的メソッドのwcfriaサービスを使用した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増加し、解放されることはありません。

この場合のメモリを解放する方法は?

4

1 に答える 1

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 );
        ...
    }
}

作成するすべてのインスタンスは、おそらく固執し、そのメモリ リークを作成しています。

于 2012-09-28T21:23:12.537 に答える