在界面程序(主程序)中,调用线程定义的事件,来操作窗体的控件(如listView控件)。
我的问题是,当线程刚开始运行时,触发事件,界面执行一点问题没有,但是当线程运行一段时间后,再触发事件的时候就会报“线程间操作错误,从来不是创建ListView控件的线程访问它!”请问高手这个问题怎么解决?

解决方案 »

  1.   

    用委托的方法,如下://定义一个委托
    public delegate void MyInvoke(string str);//更新ListView函数
    private void updateListView(string str)
    {
        this.ListView.Items.Add(str);
    }//线程的回调函数
    private void threadProc()
    {
        //其他操作
      //更新ListView
        string str="YouValue";
        MyInvoke mi=new MyInvoke(updateListView);
        this.BeginInvoke(mi,new object[]{str});
    }
      

  2.   

    在子线程里更新主线程中的控件,要使用Invoke来调用委托来实现。
      

  3.   

    或者直接
    private void threadProc()
    {
        //其他操作
      //更新ListView
        string str="YouValue";
        methodInvoke mi = new methodInvoke(updateListView);
        this.BeginInvoke(mi,new object[]{str});
    }