如何将 NetworkInformation.NetworkStatusChanged 添加到 Observable FromEventPattern

How to add NetworkInformation.NetworkStatusChanged to a Observable FromEventPattern

我最近开始学习 Rx 并尝试使用事件到 Rx 的转换。我尝试使用 NetworkInformation.NetworkStatusChanged 事件在 Window Phone 8 中创建 Network Observable。

但是当我使用 Observable.FromEventPattern 添加 NetworkInformation.NetworkStatusChanged 时,如下所示:

var networkInformationStatus = Observable.FromEventPattern(typeof(NetworkInformation), "NetworkStatusChanged");

networkInformationStatus.Subscribe(x => 
            {
                txtClickdata.Text = string.Format("Is internet connected: {0}", NetworkInterface.GetIsNetworkAvailable());
                txtClickdata2.Text = string.Format("Network type: {0}", NetworkInterface.NetworkInterfaceType);
            });

这给了我以下错误:

我做错了什么?如何将此事件添加到 Observable?

如果您阅读了有关您正在使用的方法的文档,它会说它仅适用于

events conforming to the standard .NET event pattern with a System.EventArgs parameter

NetworkInformation.NetworkStatusChanged 是非标准事件类型,因此您需要将 FromEvent 与转换重载一起使用。

        Observable.FromEvent<NetworkStatusChangedEventHandler, object>(
            emit => new NetworkStatusChangedEventHandler(
                                 (target) => emit(target)),
            h => NetworkInformation.NetworkStatusChanged += h, 
            h => NetworkInformation.NetworkStatusChanged -= h);

这将允许 Rx 正确转换传入事件。