2012-03-19 61 views
1
var DeviceSubject = new Subject<NetworkEventArgs>(); 

Observable.FromEvent<EventHandler<NetworkEventArgs>, NetworkEventArgs>(h => Device.Connected += h, h => Device.Connected -= h) 
.Subscribe(DeviceSubject); 

的Device.Connected事件的聲明如下...Observable.FromEvent沒有完成

public event EventHandler<NetworkEventArgs> Connected; 

我MainForm_Load方法停止執行我打電話Observable.FromEvent後。誰能幫忙?

+1

請不要用「c#」等來標題。這就是標籤的用途。 – 2012-03-20 02:12:44

回答

2

嘗試撥打FromEventPatternFromEvent適用於非標準事件。

var DeviceSubject = new Subject<NetworkEventArgs>(); 

Observable 
    .FromEventPattern<EventHandler<NetworkEventArgs>, NetworkEventArgs>(
     h => Device.Connected += h, 
     h => Device.Connected -= h) 
    .Select(ep => ep.EventArgs) 
    .Subscribe(DeviceSubject); 

正如旁註:小心使用這樣的主題。這是一種常見的反模式。任何可觀察到的調用OnComplete到你的主題可以殺死你的代碼。鏈接查詢更好。

+0

錯誤參數1:無法從'System.Reactive.Subjects.Subject '轉換爲'System.IObserver >' – TK3 2012-03-20 00:40:37

+0

@ TK3 - 抱歉。添加了相應的選擇。 – Enigmativity 2012-03-20 02:08:58