2012-06-14 33 views
1

我們有一個Silverlight應用程序需要在應用程序退出前保存一些數據。我們正在使用RIA服務,並實施IApplicationLifetimeAware界面。我們看到SubmitChanges方法被調用,但從來沒有看到回調(參見下面的僞代碼)。此外,我們看到,當我們調用SubmitChanges時,從來沒有通過電話發送任何請求。有沒有辦法做到這一點?當應用程序退出時,RIA服務不提交

public class ApplicationLifetimeMessenger : IApplicationService, IApplicationLifetimeAware 
{ 
    private DomainContext context; 

    public void Exiting() 
    { 
     context.SubmitChanges(OnSubmitCompleted); 
    } 

    private void OnSubmitCompleted(SubmitOperation op) 
    { 
     // Never gets here 
    } 

    // Other interface methods 
} 
+0

可能保持while循環活着而'DomainContext.HasChanges'是'真' –

+0

如果我有一個循環,應用程序只是掛起。永遠不會有通過線路發送的提交請求,所以域上下文始終有變化。 – Tevin

+0

好吧,那麼只有在用戶點擊關閉時才提供建議,即使ApplicationLifeTimeMessenger被調用之前,上下文也不會發生變化。因爲你正在處理異步調用。如果您有任何更改,可能需要一段時間才能返回。 –

回答

0

嘗試使用submitoperation。

SubmitOperation so = Context.SubmitChanges();     
so.Completed += new EventHandler(so_Completed); 
+0

這不起作用 - 提交請求永遠不會通過電線發送,所以完成事件從不會觸發。我猜想,這種方法只是一種寫作context.SubmitChanges(so_Completed)的簡單方式? – Tevin

相關問題