2011-08-03 51 views

回答

5

這是Jesse and my upcoming book,但在這裏你去,這是一個免費的東西:

public Func<T1, IObservable<TRet>> FromCallbackPattern<T1, TRet>(Action<T1, Action<TRet>> originalMethod) 
{ 
    return new Func<T1, IObservable<TRet>>((param1) => { 
     var subject = new AsyncSubject<TRet>(); 

     try { 
      return originalMethod(param1, (result) => { 
       subject.OnNext(result); 
       subject.OnCompleted(); 
      }); 
     } catch (Exception ex) { 
      subject.OnError(ex); 
     } 

     return subject; 
    }); 
} 

這裏是你如何使用它:

// Here's a sample method that follows the callback pattern 
public void DownloadPageTextAsync(string url, Action<string> callback); 

var dlPageRx = FromCallbackPattern(DownloadPageTextAsync); 

dlPageRx("http://www.jesseliberty.com") 
    .Subscribe(pageText => Console.WriteLine(pageText));