这是我目前面临的一个问题:
所有操作都已使用客户端上的async
模式实现。我可以使用基于事件的实现,但据我所知,超时仍然会发生。
增加超时值绝对是一种选择,但它感觉就像一个非常肮脏的解决方案 - 感觉就像把问题推开而不是解决它。
在服务器上实现WS事务流似乎是不可能的 - 在设计WinRT应用程序时,我无法访问TransactionScope
类。
WS Atomic看起来也有点矫枉过正(它还需要更多的设置,而且我愿意打赌WinRT应用程序的有限功能将是一个很难克服的麻烦)。
到目前为止,我唯一的想法(虽然有一个有更多移动部件,有点像重新发明轮子)是创建两个服务方法 - 一个开始一些长时间运行的操作并返回某种“任务ID” “然后在后台运行操作,并将操作结果(无论是错误还是成功)保存到具有该任务ID的DB /存储中。然后,客户端可以每隔一段时间使用该任务ID通过第二种服务方法轮询操作结果,直到这样的结果可用(无论是成功还是错误)。
这种方法也有它的缺点:
我还有什么办法可以解决这个问题?
PS。实际的服务方面也不是没有限制 - 它是一个MS DAX服务,它可能带有它自己的潜在陷阱和陷阱。
编辑: 看来我的问题与this SO question有一些相似之处...但是,考虑到客户端的WinRT性质和服务的MS DAX性质,我不确定答案中的任何内容对我来说真的很有用。