日期:2014-05-17  浏览次数:20799 次

延迟查询异步问题

  private void Form1_Load(object sender, EventArgs e)
        {
           
        }
       
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            //这里加一个300秒的延迟避免频繁查询的问题
            //但是有一个问题  this.label1.Text的上的文字延迟了
            //this.textBox1.Text这个也延迟(这个不是我想要的)
            // 在this.textBox1.Text 快速输入 123456 但是在this.textBox1.Text上有明显的延迟 这不是我们想要的
            System.Threading.Thread.Sleep(300);
            this.label1.Text = this.textBox1.Text;//这个地方将来要换成查询数据库的操作逻辑代码

            // 应该this.label1.Text 整个显示是延迟的 this.textBox1.Text显示是同步的 需要用到线程的一部调用吗?怎么实现?
        }

------解决方案--------------------
放在线程里来延迟查询,不影响ui的赋值

------解决方案--------------------
上面代码又不是在线程里
你用多线程,在多线程里延迟查询
或者你像2楼说的用timer定时器
------解决方案--------------------
线程我指的是你在单独弄个多线程,不是ui线程
------解决方案--------------------

 Timer timer = new Timer();
        public Form1()
        {
            InitializeComponent();
            timer.Interval = TimeSpan.FromMilliseconds(300);
            timer.Tick += timer_Tick;
        }

        void timer_Tick(object sender, EventArgs e)
        {
            timer.Stop();
            this.label1.Text = this.textBox1.Text;
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            timer.Start();
        }

------解决方案--------------------
    public delegate void DelayHanddler();
        public Form1()
        {
            InitializeComponent();
              }