我有一个适用于Silverlight应用程序的全双工消息传递解决方案。现在我想添加一个功能。当用户离开应用程序时,我想在退出前发送最后一条消息来通知服务器。
我尝试在应用程序退出事件期间发送双工消息,但DuplexServiceClient
已处于CommunicationState.Faulted
状态。
我还尝试建立新的连接并发送消息。客户端似乎一切都很好,但根本没有发送任何消息。我用Fiddler检查了两次。
App.Current.Exit += (s, e) =>
{
var dsc = new DuplexServiceClient(_binding, new EndpointAddress("../Services/MyService.svc"));
dsc.SendToServiceAsync(new UserLeave());
};
关键的是,我需要在用户离开应用程序后立即通知服务器,所以在这种情况下,超时或类似的解决方案对我来说不够好。
有人有有效的解决方案吗?
我在SO中发现了类似的主题。Aliostad的回答让我再次思考这个问题。你永远不能确定你会从客户那里得到他要离开的信号。所以我最终得到了超时解决方案。