如何将NetworkInformation.NetworkStatusChanged添加到Observable FromEventPattern

时间:2015-08-23 18:44:12

标签: c# windows-phone-8 system.reactive reactive-programming

我最近开始学习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);
            });

这给了我以下错误: enter image description here

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

1 个答案:

答案 0 :(得分:4)

如果您阅读有关您正在使用的方法的文档,则表示仅适用于

  

符合标准.NET事件模式的事件,带有System.EventArgs参数

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

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

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