然后,我们创建检测连接的代码,关于更多使用BackgroundWorker的方法请参考MSDN或者我的另一篇博文:实战.Net多线程(三) 和 实战.Net多线程(四)
private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
try
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(reliableURL);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (HttpStatusCode.OK == response.StatusCode)
{
response.Close();
e.Result = true;
}
else
{
e.Result = false;
}
}
catch (WebException)
{
e.Result = false;
}
}
private void BackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{
throw e.Error;
}
else
{
if ((bool)e.Result) // Online
{
OnConnected(e);
}
else // Offline
{
OnConnectFailure(e);
}
}
}
{
try
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(reliableURL);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (HttpStatusCode.OK == response.StatusCode)
{
response.Close();
e.Result = true;
}
else
{
e.Result = false;
}
}
catch (WebException)
{
e.Result = false;
}
}
private void BackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{
throw e.Error;
}
else
{
if ((bool)e.Result) // Online
{
OnConnected(e);
}
else // Offline
{
OnConnectFailure(e);
}
}
}
最后,在组件的初始化方法中实例化相关私有字段。