using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net;
using System.IO;
using System.Collections;namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        delegate void ThreadDelegate();
        ThreadDelegate ThreadD = null;
        Thread th;
        private void button1_Click(object sender, EventArgs e)
        {
            ThredBool = true;
            th = new Thread(setdelegate);
            th.IsBackground = true;
            th.Start();
        }
        bool ThredBool = true;
        public void setdelegate()
        {            while (ThredBool)
            {
                ThreadD = new ThreadDelegate(GetDataReg);
                this.BeginInvoke(ThreadD);
                Thread.Sleep(1000);
            }
        }
        ArrayList redlist = new ArrayList();        HttpWebRequest request = null;
        public void GetDataReg()
        {            String lshtms = "";
            try
            {
                string bianma = "UTF-8";                request = (HttpWebRequest)WebRequest.Create("http://www.asdasdas.com");                request.Accept = "*/*";
                HttpWebResponse response = null;
                Stream stream = null;
                StreamReader reader = null;
                redlist.Clear();
                response = (HttpWebResponse)request.GetResponse();
                request.Timeout = 500;
                stream = response.GetResponseStream();
                if (bianma.Equals("UTF-8"))
                {
                    reader = new StreamReader(stream, Encoding.UTF8);
                }
                else
                {
                    reader = new StreamReader(stream, Encoding.Default);
                }
                while (!reader.EndOfStream)
                {
                    lshtms += reader.ReadLine() + "\r\n";
                }
                stream.Close();
                stream.Dispose();
            }
            catch
            {
             
            }
        }
    }
}这样写 为什么界面会卡 无法响应

解决方案 »

  1.   

     while (ThredBool)
      {
      ThreadD = new ThreadDelegate(GetDataReg);
      this.BeginInvoke(ThreadD);
      Thread.Sleep(1000);
      }这里你有可能建立无数个线程。如果真的用这么多线程,建议使用线程池。线程也是有上限的。
      

  2.   

     while (ThredBool)
      {
      ThreadD = new ThreadDelegate(GetDataReg);
      this.BeginInvoke(ThreadD);
      Thread.Sleep(1000);
      }
    你看看ThredBool是否始终是True?如果是的话就是一个死循环了。
      

  3.   

    没感觉有特别卡啊。Thread.Sleep(1000);可能是间隔太短了,电脑处理不过来吧。
      

  4.   

    我就是要定时执行线程     那个是死循环
    要是不调用GetDataReg()获取网站源码的   
    在 GetDataReg 处理一些其他的数据,不会出现卡界面 为什么啊 ?
      

  5.   

    主要是拖动窗口的时候卡
    我是要定时启动线程  while 里是死循环为什么处理其他数据 不会出现这么卡的情况呢
      

  6.   

    你应该在while里面再次判断赋予ThredBool是false或true;否则的话要么while里的程序一直不执行,要么死循环。
      

  7.   

    Thread.Sleep(1000);在线程休眠的时候,程序不好用,连点关闭都不行的,得等休眠结束!
    我以前在做“罗汉塔游戏”的时候遇见过。