【发布时间】:2012-06-14 16:11:27
【问题描述】:
我们有一个 Silverlight 应用程序,它需要在应用程序退出之前保存一些数据。我们正在使用 RIA 服务,并实现 IApplicationLifetimeAware 接口。我们看到 SubmitChanges 方法被调用,但从未看到回调(参见下面的伪代码)。此外,我们看到当我们调用 SubmitChanges 时,从来没有通过网络发送任何请求。有没有办法做到这一点?
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
}
【问题讨论】:
-
可能在
DomainContext.HasChanges是true时保持一个while 循环。 -
如果我有一个循环,应用程序就会挂起。从来没有通过网络发送提交请求,因此域上下文总是有变化。
-
好的,那么只有当用户点击关闭时的建议,在 ApplicationLifeTimeMessenger 被调用之前,不能对上下文进行任何更改。因为您正在处理异步调用。如果您有分配的更改,它可能需要一段时间才能返回。
-
这是有道理的,但能够“开枪即忘”将非常有用
标签: silverlight silverlight-4.0 wcf-ria-services