2012-03-19 59 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