【发布时间】:2017-10-07 18:28:48
【问题描述】:
我想知道如何在 WPF C# 中显示互联网连接的状态?
我想要做的是,如果连接可用,圆形文本框将显示绿色,否则显示红色。我已经有了圆形文本框。我对代码如何能够继续检查连接感到困惑?现在它只是检查编译时间,就是这样。我仍在尝试了解这一切是如何工作的,因此,任何关于如何以不同方式完成的建议都将受到高度赞赏!
编辑:我的代码目前看起来像这样。
public LoginWindow()
{
InitializeComponent();
username.Focus();
NetworkChange.NetworkAvailabilityChanged += OnNetworkAvailabilityChanged;
var isAvailable = NetworkInterface.GetIsNetworkAvailable();
OnNetworkAvailabilityChanged(isAvailable);
}
public void OnNetworkAvailabilityChanged(bool isAvailable)
{
if (isAvailable == true)
{
wifiAvailability.Background = Brushes.LightGreen;
}
else
{
wifiAvailability.Background = Brushes.Red;
}
}
public void OnNetworkAvailabilityChanged(object obj, NetworkAvailabilityEventArgs eventArgs)
{
OnNetworkAvailabilityChanged(eventArgs.IsAvailable);
}
编辑:例外是“System.InvalidOperationException:调用线程无法访问此对象,因为不同的线程拥有它”。
根据 Internet 连接是否可用,异常发生在 public void OnNetworkAvailabilityChanged(bool isAvailable) 方法的 if 语句内。
【问题讨论】:
-
呃,我不认为这是在编译时检查。我猜你只是在启动时调用这个方法一次?也许你应该改用定时器。
-
也许事件在与 UI 线程不同的线程上执行。你确定代码是在正确的线程上执行的吗?