【发布时间】:2014-10-09 08:35:27
【问题描述】:
我正在从 .exe 文件运行服务,当我测试这个系统时,我删除了互联网连接,插入一段时间后,互联网正在连接,但我的进程没有连接。在命令提示符中显示连接问题。
我怎样才能在获得互联网连接后自动重启我的进程?
给我建议。
【问题讨论】:
我正在从 .exe 文件运行服务,当我测试这个系统时,我删除了互联网连接,插入一段时间后,互联网正在连接,但我的进程没有连接。在命令提示符中显示连接问题。
我怎样才能在获得互联网连接后自动重启我的进程?
给我建议。
【问题讨论】:
不要在再次连接互联网后重新启动进程,只需让进程按计划运行,一旦需要运行,请检查互联网连接。如果有互联网连接,做你的事,否则优雅地结束当前运行。
在伪代码中:
public void StartOfMethodThatRequiresInternet(){
if(!requiredAddress.IsAvailable()){
return;
}
DoTheRestOfTheProgram();
}
通过服务或 Windows 调度程序安排此功能以您需要的频率运行。它将自动启动并检查您需要访问的网站是否可用。如果不可用,它会自动返回。
要检查网站是否可用,请为标头发出 HttpWebRequest 并检查响应代码是否正常。 Check if a url is reachable - Help in optimizing a Class 解释了如何做到这一点:
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
request.Timeout = 15000;
request.Method = "HEAD"; // As per Lasse's comment
try
{
using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
{
return response.StatusCode == HttpStatusCode.OK;
}
}
catch (WebException)
{
return false;
}
【讨论】:
using 将数据输入文件的语句,并在您失去互联网连接时优雅地关闭文件。