2
我正在使用來自Silverlight應用程序(MVVM)和Windows Phone的WCF服務。我有一個服務類(自動生成)和一個IServiceRepository如下所示用於調用服務的IService接口。每種方法一個代理或全局級別代理
public interface IServiceRepository
{
event EventHandler<SomeEventArgs> GetDataCompleted;
void Data GetData();
// 10 more methods for fetching different data.
}
我SerViceRepository如下所示
public class ServiceRepository : IServiceRepository
{
public event EventHandler<SomeEventArgs> GetDataCompleted;
public void Data GetData()
{
var proxy = new ActualServiceRefClient();
proxy.GetDataCompleted += PrivateGetDataCompleted;
proy.GetDatAsync();
}
private void PrivateGetDataCompleted(object s, SomeEventArgs e)
{
// Error check and all
if(GetDataCompleted != null)
GetDataCompleted(this, new SomeEventArgs(...));
}
}
我打電話從我的ViewModels這個方法。現在,我的問題是...
- 現在我創建代理 類,並在每一個方法來連接事件處理 它。我應該在 ServiceRepository的構造函數中做 嗎?正如我所說我有 約10至12服務方法 調用。
- 我應該註銷已完成方法中的事件處理程序嗎?
問題是我有大約15個服務方法等15個事件要註冊。我的每個視圖模型都調用兩個或三個服務方法。通常情況下,如果我終身離開事件處理程序不成問題,但在Windows Phone 7中,最大峯值內存爲90 Mb,我們擔心內存問題 – Tanmoy 2010-11-09 08:26:08
我想我會在每次需要時實例化服務存儲庫,每個單獨方法中的事件處理程序。讓服務庫超出範圍,垃圾收集器將回收內存。 – 2010-11-09 14:06:11
謝謝。我想這是使用MVC和LINQ datacontext的方式。雖然我找不到鏈接 – Tanmoy 2010-11-12 23:45:22