Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的静态事件处理程序#_C#_Silverlight - Fatal编程技术网

C# C语言中的静态事件处理程序#

C# C语言中的静态事件处理程序#,c#,silverlight,C#,Silverlight,我有一个Silverlight应用程序。我想在我的应用程序中跟踪某人是在线还是离线。因此,我想我应该在App.xaml.cs文件中确定。为了实现这一点,我添加了以下代码: internal static bool IsOnline = false; public static event EventHandler NetworkAddress_Changed; private static void NetworkChange_NetworkAddressChanged(object send

我有一个Silverlight应用程序。我想在我的应用程序中跟踪某人是在线还是离线。因此,我想我应该在App.xaml.cs文件中确定。为了实现这一点,我添加了以下代码:

internal static bool IsOnline = false;

public static event EventHandler NetworkAddress_Changed;
private static void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
{
  IsOnline = NetworkInterface.GetIsNetworkAvailable();
  if (NetworkAddress_Changed != null)
    NetworkAddress_Changed(null, EventArgs.Empty);
}
NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);
我希望我的应用程序中的一个页面可以绑定到此事件处理程序,并相应地做出响应,然后检查App.IsOnline。然而,我不知道如何正确地连接它。在App.xaml.cs的启动事件处理程序中,我有以下代码:

internal static bool IsOnline = false;

public static event EventHandler NetworkAddress_Changed;
private static void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
{
  IsOnline = NetworkInterface.GetIsNetworkAvailable();
  if (NetworkAddress_Changed != null)
    NetworkAddress_Changed(null, EventArgs.Empty);
}
NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);

不幸的是,
NetworkChange\u NetworkAddressChanged
事件处理程序从未被调用。我想做的事可能吗?如果是,怎么做?

仅仅声明一个事件是不够的,必须有实际引发事件的代码。看起来你尝试了一些东西,结果一件事引发了另一件事。还不够好


该代码很难获得,NetworkInterface类本身没有任何事件。您需要使用计时器并定期调用GetIsNetworkAvailable()。现在,您可以在返回值更改时触发事件。

您是如何测试的?您是否拔下了电缆,关闭了无线网络?通常要小心静态事件。事件具有对该对象的强引用,因此当不再使用该对象时,该事件的任何订阅者都应该使用
-=
,以允许其获得GCD。让我重新表述一下。我正在尝试绑定到App.xaml.cs中的NetworkChange.NetworkAddressChanged事件()。当这个事件触发时,我想做一些工作,然后触发一个我的代码可以订阅的事件。这是否可能?当IP地址更改时会引发该事件。这将是非常罕见的,你必须(说)迫使DHCP租约续签。你到底想观察什么?