我在窗口里面添加了listview控件,当运行使得listview里面的内容在不断的更新变化的时候,我按窗口中所有的按钮,都毫无反应,并且也不能移动窗口了我该怎么做呢?

解决方案 »

  1.   

    有可能是读取数据比较耗时间,阻塞了消息,你可以把读取数据的操作抛到另外的线程上去做,但一定记着数据读回来之后更新listview的操作还要用Invoke把它同步回主线程.
      

  2.   

    private void button1_Click(object sender, System.EventArgs e)
    {
    start();
    }
    private void count()
    {}

    private void start()
    {
    Thread t = new Thread(new ThreadStart(count));
    t.Start();
    }
      

  3.   

    1.看看你在往listView里面添加数据的前后有没有用BeginUpdate/EndUpdate方法,如果没有加上。
    listView1.BeginUpdate();
    listView1.Items.Add();
    listView1.EndUpdate();2. 看看BeginUpdate/EndUpdate之间有没有从数据库查询,或者文件/网络的读写操作,如果有,按照RedGoldFish大哥的说法移到后台线程去做,可以使用BackgroundWorker来帮助协调后台工作线程和前台UI线程之间的通信。
      

  4.   

    UI线程被阻塞,建议向ListView填充数据时用后台线程
      

  5.   

    owennol,后台线程是不能直接操作前台的UI控件的。你说的应该是在后台加载数据然后要用Invoke方法操作UI控件其结果还是用前台主线程向ListView填充数据啊。