Sys-Admin Forum

C# - Cross-thread operation not valid

Ошибка происходила в мультипотоковом асинзронном задании задании (RunWorkerAsync), метод на котором вызывалась данная ошибка, необходимо было заключить в Invoke, исходный кусок:

                ds.Tables.Add(table);
                dg.DataSource = ds.Tables[0];

                dg.DataSource = ds.Tables[0];
                bindSource.DataSource = ds.Tables[0];

                txtID.DataBindings.Add(new Binding("Text", bindSource, "id"));
                txtLevelDisplayName.DataBindings.Add(new Binding("Text", bindSource, "LevelDisplayName"));
                txtLogName.DataBindings.Add(new Binding("Text", bindSource, "LogName"));
                txtMachineName.DataBindings.Add(new Binding("Text", bindSource, "MachineName"));
                txtMessage.DataBindings.Add(new Binding("Text", bindSource, "Message"));
                txtProviderName.DataBindings.Add(new Binding("Text", bindSource, "ProviderName"));
                txtRecordID.DataBindings.Add(new Binding("Text", bindSource, "RecordID"));
                txtTaskDisplayName.DataBindings.Add(new Binding("Text", bindSource, "TaskDisplayName"));
                txtTimeCreated.DataBindings.Add(new Binding("Text", bindSource, "TimeCreated"));

                recordInfo();

Помещаем код в Action:

System.Action DoCrossThread = () => { }

Вызываем:

this.BeginInvoke(DoCrossThread);