Я изо всех сил пытался понять, как использовать Rx. Большинство примеров устарели, ссылаются на начало / конец или длинные и сложные.
У меня есть простой метод службы 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
}
Как мне изменить это, чтобы использовать Rx?
EDIT
Благодаря помощи Пола я проделал большую часть пути туда. Вот как это выглядит сейчас. Единственная проблема - подписка никогда не срабатывает. Есть идеи?
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;
}