gpt4 book ai didi

c# - NetworkService 异常发生在 WP 8 而不是 WP 8.1 中。有没有办法可以重写它以同时适用于 8 和 8.1?

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:58 27 4
gpt4 key购买 nike

终于找到了为什么一些用户报告崩溃而另一些用户说他们没有问题。我使用 NetworkService 类来检查互联网连接。但显然这不适用于 WP 8。有没有办法重做它以便它在两个操作系统上都能工作?我的 NetworkServices.cs 中的这一行出现异常

返回配置文件.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess;

网络服务.cs:

{
public class NetworkService : INetworkService
{
public bool IsConnectionAvailable
{
get
{
ConnectionProfile profile = NetworkInformation.GetInternetConnectionProfile();

if (profile == null)
{
return false;
}

return profile.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess;
}
}
}

相关的 MainPage.cs:

if (data.IsDownloaded)
{
this.PlaySound(IsolatedStorageFile.GetUserStoreForApplication().OpenFile(data.SavePath, FileMode.Open, FileAccess.Read, FileShare.Read));
}
else
{
if (!SimpleIoc.Default.GetInstance<INetworkService>().IsConnectionAvailable)
{
MessageBox.Show("You need an network or cellular connection to download.");
}

堆栈跟踪:

{System.NotImplementedException: 方法或操作未实现。在 Windows.Networking.Connectivity.ConnectionProfile.GetNetworkConnectivityLevel() 在 App.Services.NetworkService.get_IsConnectionAvailable() 在 App.MainPage.LongListSelector_SelectionChanged(对象发送者,SelectionChangedEventArgs e)在 Microsoft.Phone.Controls.LongListSelector.set_SelectedItem(对象值)在Microsoft.Phone.Controls.LongListSelector.OnItemTap(对象发送者,GestureEventArgs e)在 MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex,委托(delegate)处理程序委托(delegate),对象发送者,对象 args)在 MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj,IntPtr unmanagedObjArgs,Int32 argsTypeIndex,Int32 actualArgsTypeIndex,String eventName)} System.Exception {System.NotImplementedException}

最佳答案

Windows Phone 8 上的 NetworkInformation.GetInternetConnectionProfile() 是一个较新的基于 WinRT 的 API,但不幸的是,它看起来并没有实现大多数方法。

在运行时,使用调试器,您会看到几乎所有属性都抛出 NotImplementedException 类型的异常。但是因为方法和属性被 stub ,Visual Studio 并不知道更好,并允许编译代码。

我已经在 WP8 SL、WP8.1 SL、WP8.1 XAML 项目中使用 WP8 和 WP8.1 模拟器测试了以下方法,如果可能,以确认以下...


Windows Phone 7.5 和 8.0

由于 NetworkInformation.GetInternetConnectionProfile() 未完全实现(或根本未在 7.5 上实现),the MSDN documentation recommends ...

DeviceNetworkInformation.IsNetworkAvailable();

注意:这仍然可以在 Windows Phone 8.1 Silverlight 中使用


Windows Phone 8.1 SL 和 XAML/WinRT

由于 Windows 8 和 Windows Phone 8 之间的日益融合,几乎所有 WinRT API 现在都可以在 Windows Phone 8.1 中使用。如果您正在制作 Windows Phone 8.1(SL 或 XAML)或通用所有(Windows 8.1 + Windows Phone 8.1),使用最新的 API 是有意义的...

NetworkInformation.GetInternetConnectionProfile() 

关于c# - NetworkService 异常发生在 WP 8 而不是 WP 8.1 中。有没有办法可以重写它以同时适用于 8 和 8.1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24638618/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com