如何将 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 正确转换传入事件。
我最近开始学习 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 正确转换传入事件。