diff --git a/src/Essentials/src/Connectivity/Connectivity.uwp.cs b/src/Essentials/src/Connectivity/Connectivity.uwp.cs index 84dedc99e84d..dd4cf9a5214c 100644 --- a/src/Essentials/src/Connectivity/Connectivity.uwp.cs +++ b/src/Essentials/src/Connectivity/Connectivity.uwp.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using Microsoft.Maui.ApplicationModel; using Windows.Networking.Connectivity; namespace Microsoft.Maui.Networking @@ -20,22 +21,10 @@ public NetworkAccess NetworkAccess { get { - var profile = NetworkInformation.GetInternetConnectionProfile(); - if (profile == null) - return NetworkAccess.Unknown; - - var level = profile.GetNetworkConnectivityLevel(); - switch (level) - { - case NetworkConnectivityLevel.LocalAccess: - return NetworkAccess.Local; - case NetworkConnectivityLevel.InternetAccess: - return NetworkAccess.Internet; - case NetworkConnectivityLevel.ConstrainedInternetAccess: - return NetworkAccess.ConstrainedInternet; - default: - return NetworkAccess.None; - } + return + MainThread.IsMainThread ? + GetNetworkAccess() : + MainThread.InvokeOnMainThreadAsync(GetNetworkAccess).GetAwaiter().GetResult(); } } @@ -82,5 +71,34 @@ public IEnumerable ConnectionProfiles } } } + + NetworkAccess GetNetworkAccess() + { + try + { + var profile = NetworkInformation.GetInternetConnectionProfile(); + + if (profile == null) + return NetworkAccess.Unknown; + + var level = profile.GetNetworkConnectivityLevel(); + + switch (level) + { + case NetworkConnectivityLevel.LocalAccess: + return NetworkAccess.Local; + case NetworkConnectivityLevel.InternetAccess: + return NetworkAccess.Internet; + case NetworkConnectivityLevel.ConstrainedInternetAccess: + return NetworkAccess.ConstrainedInternet; + default: + return NetworkAccess.None; + } + } + catch + { + return NetworkAccess.Unknown; + } + } } -} +} \ No newline at end of file