使用的Rx调用WCF服务方法异步引起关闭问题
-
25-09-2019 - |
题
我目前使用此代码涂调用web服务来获得数据的应用程序页面。 一切都很好,直到我尝试调用此方法连续10次,而无需等待第一呼叫到结束。
这样做使我有倒闭的问题,我得到了我所有的结果相同的结果的对象。
有没有人用Rx.Net之前面对此?如果是的话没有任何人有一个想法或铅,这样我可以解决这个问题。
public void GetPage(long pageId, Action<PageDTO> observer)
{
Observable.FromEvent<GetPageCompletedEventArgs>(
handler => Service.GetPageCompleted += handler,
handler => Service.GetPageCompleted -= handler)
.Select(eventHandler => eventHandler.EventArgs.Result)
.Take(1) // necessary to ensure the observable unsubscribes
.ObserveOnDispatcher() // controls which thread the observer runs on;
.Subscribe(observer, HandleError);
Service.GetPageAsync(pageId);
}
解决方案
时Service
总是相同的实例?如果是的话,你会遇到各种各样的疯狂,由此GetPageCompleted
事件将通过不同的调用创建(使用不同的参数)的FromEvent
来处理,这可以解释为什么你的结果是被称为在所有的方法相同在同一时间。
您可以通过使用开始/结束的方法,尽管你仍可能运行与基础连接上争用问题解决这个具体问题。
public void GetPage(long pageId, Action<PageDTO> observer)
{
Observable.FromAsyncPattern<long, PageDTO>(
service.BeginGetAwards, service.EndGetAwards)(pageId)
.ObserveOnDispatcher() // controls which thread the observer runs on;
.Subscribe(observer, HandleError);
}
不隶属于 StackOverflow