【问题标题】:RIA Services does not submit when Application Exiting应用程序退出时 RIA 服务不提交
【发布时间】: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.HasChangestrue 时保持一个while 循环。
  • 如果我有一个循环,应用程序就会挂起。从来没有通过网络发送提交请求,因此域上下文总是有变化。
  • 好的,那么只有当用户点击关闭时的建议,在 ApplicationLifeTimeMessenger 被调用之前,不能对上下文进行任何更改。因为您正在处理异步调用。如果您有分配的更改,它可能需要一段时间才能返回。
  • 这是有道理的,但能够“开枪即忘”将非常有用

标签: silverlight silverlight-4.0 wcf-ria-services


【解决方案1】:

尝试使用提交操作。

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

【讨论】:

  • 这不起作用 - 提交请求永远不会通过网络发送,因此 Completed 事件永远不会触发。我猜这种方法只是编写 context.SubmitChanges(so_Completed) 的一种简单的方式?
猜你喜欢
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多