我一直在努力弄清楚如何使用Rx。大多数例子都过时了,参考开始/结束或者很长很复杂。我如何简单地使用Rx调用asyc WCF服务方法
我有一个简单的WCF服务方法,它接受一个int并返回一个JobMaster对象。
这是我如何把它的那一刻:
public static void GetJob(int jobId)
{
KernServiceClient.GetJobCompleted += GetJobCompleted;
KernServiceClient.GetJobAsync(jobId);
}
private static void GetJobCompleted(object sender, GetJobCompletedEventArgs e)
{
// JobMaster available in e.Result
}
如何改变这种使用接收?
编辑
感谢保罗的帮助,我得到了大部分的方式。这就是现在的样子。唯一的问题是订阅从不会触发。有任何想法吗?
public static JobMaster GetJob(int jobId)
{
JobMaster retval = null;
IKernService kernServiceInterface = KernServiceClient;
var getJobFunc = Observable.FromAsyncPattern<int, Server.KernMobileWcfService.JobMaster>(
kernServiceInterface.BeginGetJob, kernServiceInterface.EndGetJob);
var result = getJobFunc(jobId);
result
.Subscribe
(
onNext: x => retval = ConvertJobMaster(x),
onError: ex => ShowError(ex.Message)
);
return retval;
}
谢谢 - 我指出了正确的方向。现在大部分路都在那里。尽管订阅失败(请参阅更新)。有任何想法吗? – 2011-12-29 20:06:46
这应该工作。尝试启用第一次机会例外? – 2011-12-30 02:54:08