我在WPF中有一个桌面应用程序,在.Net 4.0 Client下开发了C# 根据互联网是否可用而在PC上显示或隐藏某些数据的框架。 这意味着我必须能够尽快检测互联网是否断开或连接以便做出反应。 (示例可以断开与无线网络的连接或拔掉网络电缆)
当我研究了一下时,我发现名为NetworkChange
的类NetworkAvailabilityChanged
中存在一个事件,每次连接发生变化时都会触发该事件(link to docs)。
我在Windows 8计算机上进行开发,当我在那里尝试时,事件没有被触发但是当我在Windows 7上运行该应用程序时,该事件被触发。正如在文档中所说的那样,框架4.0对该事件的兼容性要等到Windows 7,但是在框架4.5兼容性文档中查看同一事件也说明了Windows 8。
问题是即使我将项目的目标框架切换到4.5(这不是主意),事件也不会在Windows 8上触发。
是否存在任何我未意识到的不兼容问题?有没有更好的方法在连接发生变化时收到通知?
如果可能的话,我需要一个适用于Windows Vista,7和8的Framework 4.0客户端的解决方案
答案 0 :(得分:2)
http://msdn.microsoft.com/en-us/library/ee264321(VS.85).aspx
我在同一研究期间遇到过这个链接。它更有帮助。
答案 1 :(得分:1)
@William Riley的回答帮助我找到了解决方法。
最后,我使用Windows API中的网络列表管理器通过Microsoft的COM实现来实现这一点。 (你可以查看一些examples)
为项目添加正确的引用非常重要:
然后,您可以按照链接中的示例进行操作,非常简短直接。