我的电脑每 5 分钟就会失去一次 Internet 连接。(很长的解释为什么)。
在后台,我每 10 分钟运行一个 C# 计时器,它执行非常简单的操作:
WebBrowser bobo = new WebBrowser();
bobo.Navigate(url);
while(bobo.ReadyState != WebBrowserReadyState.Complete){Application.DoEvents();}
string responsestring = bobo.DocumentText.ToString();
bobo.Dispose();
// and then do some stuff with responsestring
确保 bobo webbrowser 在加载页面时 DID 具有 Internet 连接非常重要。我怎么做?
我尝试了“try-catch”语句,但是没有互联网时它不会抛出异常。
我想过做“加载完成”的处理程序,但是它会使我的程序非常复杂并且使用太多的内存,所以寻找其他方法。
我最新的解决方案是:
...
while(bobo.ReadyState != WebBrowserReadyState.Complete){Application.DoEvents();}
if (bobo.DocumentTitle == "Navigation Canceled"){throw new DivideByZeroException();}
...
它适用于 bobo 浏览器。但是当我使用 responsestring 时——我创建了许多其他浏览器(一个接一个)——这个解决方案在那里不起作用。
还有其他一些我没有提到的测试吗?
找到的解决方案:
非常感谢。
我没有使用您的解决方案(它在连接关闭几秒钟后返回 TRUE)。
但我发现了这个:
[DllImport("wininet.dll", SetLastError = true)]
static extern bool InternetCheckConnection(string lpszUrl, int dwFlags, int dwReserved);
public static bool CanConnectToURL(string url)
{
return InternetCheckConnection(url, 1, 0);
}
它按字面意思向 URL 发送 PING,如果收到答案则返回 TRUE,否则返回 FALSE。完美运行。