本帖最后由 GUNDAM525 于 2010-01-06 10:29:28 编辑

解决方案 »

  1.   

    private void SetDataGridView()   //控件操作   
            {
    DataViews.BeginUpdate();
    ...
    DataViews.EndUpdate();
    }这样试试
      

  2.   

     private void BindThread()
            {
                //Control.CheckForIllegalCrossThreadCalls = false;
                ThreadStart bind = new ThreadStart(SetDataGridView);
                DataViewsThread = new Thread(bind);
                DataViewsThread.Start();
                //加上这个等线程终止吧!
                  Thread.Sleep(100);
            }
      

  3.   

    没有看懂你的写法,你每次调用Invoke时,好像都是采用线程来执行的,
    private delegate void delegateFunction();
    private void ThreadFun()
    {
    ThreadStart bind = new ThreadStart(InvokeFun);
                DataViewsThread = new Thread(bind);
                DataViewsThread.Start();}
    private void InvokeFun()
    {
    if (this.InvokeRequired)
    {
        delegateFunction d = new delegateFunction(InvokeFun);//这里应该指向自己,而不是线程
        this.Invoke(d);
    }
    else
    {
    //执行实际绑定代码
    }}