C#Webclient无法正常工作

时间:2013-08-23 17:40:14

标签: c# browser webclient webrequest

我创建了一个简单的工具,可以在网站中找到注册选项(200个网站列表在arraylist中)。 我使用的是webbrowser,但它有缓存和cookie的问题所以我切换到了webclient。当我放置断点和调试时它工作正常,但是当我正常运行时,它还包括那些没有注册选项的网站。 这是我的代码

private void btnSearch_Click(object sender, EventArgs e)
    {           
            timer1.Enabled = true;
            timer1.Start();
    }

Timer1代码

 string st;
        private void timer1_Tick(object sender, EventArgs e)
        {
                st = "";
Application.DoEvents();                
                        try
                        {
                            st = lst[dataindex2].ToString();       
                            using (WebClient asyncWebRequest = new WebClient())
                            {
                                asyncWebRequest.DownloadDataCompleted += asyncWebRequest_DownloadDataCompleted;
                                Uri urlToRequest = new Uri(st);
                                asyncWebRequest.DownloadDataAsync(urlToRequest);
                                asyncWebRequest.Dispose();
                            }

                            dataindex2++;
                            if (dataindex2 == lst.Count)
                            {
                                timer1.Stop();                                
                                lblStatus.Text = "Stopped";
                                lblStatus.ForeColor = Color.DarkRed;
                                MessageBox.Show("Search Completed");                                
                            }
                        }
                        catch (Exception ex)
                        {
                            timer1.Stop();                            
                            lblStatus.Text = "Stopped";
                            lblStatus.ForeColor = Color.DarkRed;
                            timer1.Dispose();
                            MessageBox.Show(ex.Message);
                            return;
                        }

asyncWebRequest_DownloadDataCompleted code:

private void asyncWebRequest_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
    {
        if (e.Error != null)
        {
            timer1.Stop();
            ena();
            lblStatus.Text = "Stopped";
            lblStatus.ForeColor = Color.DarkRed;
            timer1.Dispose();                
            MessageBox.Show(e.Error.Message);                
        }

        if (e.Result != null && e.Result.Length > 0)
        {
            string browsetext = "";
            int = iSuccess = 0;
            browsetext = Encoding.Default.GetString(e.Result);

                    iSuccess = browsetext.IndexOf("Sign up") + 1;
                    if (iSuccess == 0)
                    {

                    }
                    else
                    {

                        listBox1.Items.Add(st);
                        domaincount++;                            
                        lblDomainCount.ForeColor = Color.DarkGreen;
                        lblDomainCount.Text = domaincount.ToString();
                    }
                }
                else
                {
                }
            }
        }
        else
        {
            MessageBox.Show("No data found.");
        }
    }

请帮助,如果有任何替代的webclient不挂gui,请建议。 TY。

1 个答案:

答案 0 :(得分:0)

开始下载后立即处理WebClient。

asyncWebRequest.DownloadDataAsync(urlToRequest);
asyncWebRequest.Dispose();

  

请帮助,如果有任何替代的webclient不挂gui

请参阅my other answer,它为WebClient创建一个包装器,以便能够使用async / await。 HttpClient也可以替代。