2012-09-28 20 views
0

我有以下的Silverlight應用程序的機智WCF RIA服務在靜態方法代碼:如何爲wcf ria服務調用釋放內存?

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瀏覽器進程,並且從未發佈。

如何釋放這種情況下的內存?

回答

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

您創建的每個實例可能是堅持圍繞並創建內存泄漏。

+0

我完全同意埃德,也認爲WCF Ria服務依賴於「上下文」的概念,而在你的代碼中你使用的就像一個普通的wcf代理 – mCasamento