我正在开发一个需要与网络配合使用的Windows Phone 7应用程序。
我希望我的应用程序在NetworkAddress更改后可以连接。所以我用了NetworkChange.Networkaddresschanged。我在模拟器上测试我的应用程序。它第一次启动,但由于没有网络,我什么都不做。当网络可用时,此NetworkAddresschanged不会第二次启动。
我的代码是
public void OnNetworkDownEvent()
{
lock (_networkChange)
{
var handler =_OnNetworkDown;
if (handler != null)
{
_OnNetworkDown();
}
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
NetworkChange.NetworkAddressChanged -= OnNetworkChange;
NetworkChange.NetworkAddressChanged += OnNetworkChange;
});
_connectionDown = true;
Monitor.Wait(_networkChange);
OnNetworkUpEvent();
}
}
public void OnNetworkUpEvent()
{
var handler = _OnNetworkUp;
if (handler != null)
{
_OnNetworkUp();
}
}
private void OnNetworkChange(object sender, EventArgs e)
{
lock(_networkChange)
{
if(NetworkInterface.GetIsNetworkAvailable())
{
if (_connectionDown)
{
_connectionDown = false;
Monitor.Pulse(_networkChange);
//OnNetworkUpEvent();
}
}
}
}
我在网络关闭时调用Networkdownevent()
。那时我将一个委托附加到NetworkAddressChange。
我不知道为什么会这样。
答案 0 :(得分:1)
手机将看到与主机PC的USB连接,因为它是主要连接,因此更改连接的PC的网络连接不会对手机产生影响。
这是一种无法使用附加的调试器进行测试的情况。您必须在没有连接的情况下将调试输出存储/显示在设备上 为了测试,我建议让手机仅连接到WiFi,然后通过打开或关闭接入点来控制连接状态。 (对于这种情况,这是我所知道的最简单的技术。)