zoukankan      html  css  js  c++  java
  • SpiderForm.cs

    SpiderForm.cs
    一、单击开始按钮
     启动线程spider,其调用方法为SpiderThread()
    二、SpiderThread()方法
    如果按钮begin的Text值等于“取消”,则
     m_spider.Quit=true(m_spider是Spider类的一个实例)
     按钮begin的Enabled值为“false”
    否则
     按钮begin的Text值为“取消”
     文本框targetURL的Enabled值为“false”
     文本框threadCount的Enabled值为“false”
     文本框outputDir的Enabled值为“false”
     创建一个Spider类的实例,其引用为m_spider
     m_spider.ReportTo = this;
     m_spider.Report的值为m_spider实例
    (在类的构造函数中出现的this作为一个值类型,它表示对正在构造的对象本身的引用
    在类的方法中出现的this作为一个值类型,表示对调用该方法的对象的引用
    在结构的构造函数中出现的this作为一个变量类型,表示对正在构造的结构的引用
    在结构的方法中出现this作为一个变量类型,表示对调用该方法的结构的引用 )
     将outputDir.Text赋值给实例m_spider的属性OutputPath
     将threadCount.Text转换成整数赋值给threads
     如果threads<1,则threads=1
     将threads赋值给threadCount.Text
     尝试启动m_spider.Start(new Uri(this.targetURL.Text),threads),其输入参数为URL,threads
     捕捉到错误,显示错误并返回
     恢复系统环境
     begin.Text = "Begin";
     targetURL.Enabled = true;
     threadCount.Enabled = true;
     outputDir.Enabled = true;
     begin.Enabled = true;
    三、SetLastURL(string str)方法 
     当前的URL
     currentURL.Text = str
    四、 SetElapsedTime(string str)方法
     用时
     elapsed.Text = str
    五、SetProcessedCount(string str)方法
     已经处理的URL数量
     processedURLs.Text = str
    六、SpiderForm_Close(object sender, CancelEventArgs e)方法
         退出程序
     Application.Exit()
    源代码:
    public class SpiderForm : System.Windows.Forms.Form
     {
      private System.Windows.Forms.Label label1;
      private System.Windows.Forms.Label label2;
      private System.Windows.Forms.TextBox targetURL;
      private System.Windows.Forms.TextBox threadCount;
      private System.Windows.Forms.Button begin;
      private System.Windows.Forms.Label label3;
      private System.Windows.Forms.Panel panel1;
      private System.Windows.Forms.Label currentURL;
      private System.Windows.Forms.Label label5;
      private System.Windows.Forms.Label label6;
      private System.Windows.Forms.Label processedURLs;
      private System.Windows.Forms.Label elapsed;
      private System.Windows.Forms.Label label4;
      private System.Windows.Forms.TextBox outputDir;

      private Spider m_spider;
      ...
      private void begin_Click(object sender, System.EventArgs e)
      {
       //启动一个线程
       ThreadStart starter = new ThreadStart(this.SpiderThread);
       Thread spider = new Thread(starter);
       spider.Start();
      }

      public void SpiderThread()
      {
       if( begin.Text.Equals("Cancel") )
       {
        m_spider.Quit = true;
        begin.Enabled = false;
       }
       else
       {
        begin.Text = "Cancel";
        targetURL.Enabled = false;
        threadCount.Enabled = false;
        outputDir.Enabled = false;
        //开始一个Spider
        m_spider = new Spider();
        m_spider.ReportTo = this;
        m_spider.OutputPath = outputDir.Text;
        int threads = int.Parse( threadCount.Text);
        if(threads<1)
         threads = 1;
        threadCount.Text = ""+threads;
        try
        {
         m_spider.Start(new Uri(this.targetURL.Text),threads);
        }
        catch( UriFormatException ex)
        {
         System.Windows.Forms.MessageBox.Show( ex.Message );
         return;
        }

        begin.Text = "Begin";
        targetURL.Enabled = true;
        threadCount.Enabled = true;
        outputDir.Enabled = true;
        begin.Enabled = true;
       }

      }

      public void SetLastURL(string str)
      {
       currentURL.Text = str;
      }

      public void SetElapsedTime(string str)
      {
       elapsed.Text = str;
      }

      public void SetProcessedCount(string str)
      {
       processedURLs.Text = str;
      }

      private void SpiderForm_Close(object sender, CancelEventArgs e)
      {
       Application.Exit();
      }

     }

     
     
     
     

     

     

  • 相关阅读:
    C# 基础练习题
    WinForm中实现播放mp3 、mp4文件
    C语言实现的水仙花数
    【转】.net 经典面试题
    vipspa实现前端路由
    spring定时任务<task:scheduled-tasks>的问题
    MongoDB中$month和$dayOfMonth的坑
    SpringMVC中MultipartFile参数问题
    IllegalStateException : Web app root system property already set to different value问题详解
    jsoup简单的爬取网页数据
  • 原文地址:https://www.cnblogs.com/911/p/1160026.html
Copyright © 2011-2022 走看看