技术开发 频道

利用BackgroundWorker检测网络连接

  然后,我们创建检测连接的代码,关于更多使用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);
                }
            }
        }

  最后,在组件的初始化方法中实例化相关私有字段。

0
相关文章