public delegate void dlgSetDataGridSource(DataTable pDt);
        private void SetDataGridSource(DataTable pDt)
        {
            if (this.dataGrid1.InvokeRequired)
            {
                dlgSetDataGridSource dlg = new dlgSetDataGridSource(SetDataGridSource);
                this.dataGrid1.Invoke(dlg, new object[] { pDt });
            }
            else
            {
               
                this.dataGrid1.DataSource = pDt;
                if (pDt != null && pDt.Rows.Count > 0)
                {
                    DataGridTableStyle dgdtblStyle = new DataGridTableStyle();
                    dgdtblStyle.MappingName = pDt.TableName;
                    dataGrid1.TableStyles.Add(dgdtblStyle);
                    GridColumnStylesCollection colStyle = dataGrid1.TableStyles[0].GridColumnStyles;
                   
                    for (int i = 0; i < pDt.Columns.Count ; i++)
                    {
                        colStyle[i].Width = 30;
                    }
                  
                 
                }            }
        }
运行,第一次没问题,第二次有个错误提示:this.dataGrid1.Invoke(dlg, new object[] { pDt });
提示如下:确保此方法的参数具有有效值,
如果您好使用的是一个集合,请确保索引小于该集合的大小。