是这样,主线程中有个grid,有多行数据,其中有两列 c1,c2
我需要开启2个线程循环执行操作。
第一个线程简称x1,每执行成功一次需要更改对应gridRow的c1,操作的方法是method1
第二个线程x2,每执行成功一次需要更改对应gridRow的c2,操作方法是method2不知道该怎么实现一直做bs的,Cs上是新手,来学习了,请求各位赐教,源码最好,谢谢!

解决方案 »

  1.   

    你可以把 循环的逻辑放到新线程里去 不过更改的操作还是交给Oner的BeginInvoke吧
      

  2.   

    试试线程池吧,ThreadPool.QueueUserWOrkItem(new WaitCallback(method1),parameter参数);ThreadPool.QueueUserWOrkItem(new WaitCallback(method2),parameter参数)
      

  3.   

    跨线程访问控件用委托就可以   _thread = new System.Threading.Thread(new System.Threading.ThreadStart(Search));
                _thread.Start();
     /// <summary>
            ///  设置单元格值的委托
            /// </summary>
            /// <param name="rowIndex"></param>
            /// <param name="colName"></param>
            /// <param name="value"></param>
            delegate void d_SetColumnValue(int rowIndex, string colName, string value);
      /// <summary>
            ///   设置单元格值
            /// </summary>
            /// <param name="rowIndex"></param>
            /// <param name="colName"></param>
            /// <param name="value"></param>
            private void SetColumnValue(int rowIndex, string colName, string value)
            {
                if (dgvResult.Rows.Count <= rowIndex)
                {
                    return;
                }
               
                this.dgvResult.Rows[rowIndex].Cells[colName].Value = value;
            }
    private void Search()
    {
     
     d_SetColumnValue setColumnValue = new d_SetColumnValue(SetColumnValue);this.Invoke(setColumnValue, rowIndex, "列名", "更新的值");
    }
      

  4.   

    看两个线程我想你是会的  但是CS中你的控件都在主线程上运行的 你如果要在其它进程上操作主线程上的
    控件时 就呀要使用代理  也就是this.Invoke(代理方法,参数);