我正在尝试在win8中构建一个通用应用程序,其中一个功能是显示连接状态。状态显示为一个按钮,该按钮变为“绿色”状态。如果有效并且红色'如果不活跃。
这是网络检测代码:
public class InternetConnectionChangedEventArgs : EventArgs
{
public InternetConnectionChangedEventArgs(bool isConnected)
{
this.isConnected = isConnected;
}
private bool isConnected;
public bool IsConnected
{
get { return isConnected; }
}
}
public static class Network
{
public static event EventHandler<InternetConnectionChangedEventArgs>
InternetConnectionChanged;
static Network()
{
NetworkInformation.NetworkStatusChanged += (s) =>
{
if (InternetConnectionChanged != null)
{
var arg = new InternetConnectionChangedEventArgs(IsConnected);
InternetConnectionChanged(null, arg);
}
};
}
public static bool IsConnected
{
get
{
var profile = NetworkInformation.GetInternetConnectionProfile();
var isConnected = (profile != null
&& profile.GetNetworkConnectivityLevel() ==
NetworkConnectivityLevel.InternetAccess);
return isConnected;
}
}
}
所以最后我调用函数来设置按钮的颜色,但是系统会抛出一个异常,说明&#34;应用程序正在使用为不同线程编组的线程&#34;
这是Main()构造函数中的代码。
一旦拔下网线,应用程序就会抛出异常..
Network.InternetConnectionChanged +=async(s,e)=>
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
isInternetON=e.IsConnected;
});
SetConnectionStaus(isInternetON);
};
我的观点是,我在更新按钮的颜色的同时从另一条线上拨打一条线.....亲切的帮助!!
答案 0 :(得分:0)
您可以使用此代码段从非UI威胁更新UI属性:
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
//Do thing / change value here
});