Witam
Mam problem z poprawnym podejściem do obsługi asynchronicznego wywołania metody z web service (napisany w PHP - nuSOAP z wsdl) w aplikacji klienckiej na platformie Windows Phone 7.
Napisze może najpierw co chcę osiągnąć:
Przy załadowaniu strony ładuję dane z ViewModel (każdy element elementem mojej klasy), które są wyświatlane w listboxie. Następnie dla każdego z elementów z listy chcę wywołać metodę z web service, której argumentem jest właśnie właściwość mojej klasy.

Przewałkowałem trochę internetu na temat Reactive Extensions, bo to wydaje się być najrozsądniejszym rozwiązaniem i póki co na stackoverflow ( http://stackoverflow.com/questions/6396251/problem-with-rx-and-web-service-collection-loading-wp7) podpowiedziano mi, żebym spróbował takiego rozwiązania:

 
public Page()
{
    InitializeComponent();

    DataContext = App.ViewModel;

    this.Loaded += new RoutedEventHandler(Page_Loaded);
}

void Page_Loaded(object sender, RoutedEventArgs e)
{
    App.ViewModel.LoadData();

    var storedStock =
        new ObservableCollection<WebServiceClass.ItemGetValues>();  

    List.ItemsSource = storedStock;

    var values =
        Observable.Using<WebServiceClass.ItemGetValues, GPWWebservicePortTypeClient>
            (() => new GPWWebservicePortTypeClient(), ws =>
            {
                var clientGetLastValue = Observable
                    .FromAsyncPattern<string, GetLastValueCompletedEventArgs>
                    (ws.GetLastValueAsync, ws.GetLastValueResult);

                Func<string, WebServiceClass.ItemGetValues> deserializeFirst = r =>
                    ((List<WebServiceClass.ItemGetValues>)JsonConvert
                    .DeserializeObject(r,
                        typeof(List<WebServiceClass.ItemGetValues>)))
                    .First();

                var values =
                    from item in App.ViewModel.Items
                    from e in clientGetLastValue(item)
                    select deserializeFirst(e.Result);
            });

    values.Subscribe(storedStock.Add);
}

Problem polega na tym, że nie mam tej metody ws.GetLastValueResult. Myślałem, że może chodzi o metodę z przypisanego eventu:

client.GetLastValueCompleted +=
            new EventHandler<GetLastValueCompletedEventArgs>(**client_GetLastValueCompleted**); 

Ale to nie to. Próbowałem też przypisać obserwatora do eventu GetLastValueCompletedEventArgs. Póki co nie do końca chwytam tej idei tym bardziej, że dopiero zaczynam przygodę z C#.

Z góry dzięki za pomoc.