写了个定时执行远程抓取url,怎样在这里加一个线程,防止程序卡掉
.....
....
....
private void timer1_Tick(object sender, EventArgs e)
        {
            count++;
            String fileName = System.Configuration.ConfigurationManager.AppSettings["fileName"];
            String url = System.Configuration.ConfigurationManager.AppSettings["url"];            try
            {
                //编码
                Encoding encode = Encoding.GetEncoding("gb2312");
                //请求URL
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);                HttpWebResponse rep = (HttpWebResponse)req.GetResponse();
                //创建StreamReader与StreamWriter文件流对象
                StreamReader sr = new StreamReader(rep.GetResponseStream(), encode);
                StreamWriter sw = new StreamWriter(fileName, false, encode);
                //写入内容
                sw.Write(sr.ReadToEnd());
                //清理当前缓存区,并将缓存写入文件
                sw.Flush();
                //释放相关对象资源
                sw.Close();
                sw.Dispose();
                sr.Close();
                sr.Dispose();            }
            finally
            {            }
                   textBox2.Text = "当前执行时间是:" + DateTime.Now.ToString("yyyy-MM-dd HH;mm:ss")
                                   + "\r\n\r\n" + "执行次数:" + count;         }

解决方案 »

  1.   


    private System.Threading.Timer timerlisten;
     timerlisten = new System.Threading.Timer(new TimerCallback(displayProgess), this, 5000, 100);void displayProgess(object obj)
            {
    //执行的东西
    }
      

  2.   

    把请求url代码放到一个函数中,Thread一个线程,指定执行你的函数,就行了,
      

  3.   

    winform的Timer会占用UI线程,要么你在线程池的线程执行(System.Threading.Timer),要么你用多线程,要么在事件方法里加一句
    Application.DoEvents();