This is more suited to the async/await keywords than Rx. Rx is primarily for managing streams of data, whereas in this case all you want to do is manage an asynchronous call synchronously. You could try using Rx like so:

public string getMyBook(string bookName)
{
    Servo.ServoClient svc = new ServoClient();
    svc.GetBookAsync(bookName);

    var o = Observable.FromEventPattern&lt;GetBookCompletedEventArgs&gt;(svc, "GetBookCompleted");
    return o.First().EventArgs.Result;
}


However, if GetBookAsync raises the event before you subscribe, the thread will block forever. You could mess around with .Replay() and .Connect() but you should probably just use async/await!

Silverlight: Returning value from synchronous method using Rx
I would like to have my brush strokes on one layer and coloring done by live paint bucket on another layer. When I select the strokes and make a live paint group to color with everything, strokes and colors inside strokes become one object. Is there any way to seperate my brush linework and colors on different layers?
