2013-08-08 2 views
0

При вводе данных я получаю предупреждение ниже.Исключение броска при вводе данных в C#

Parallel.ForEach(user, data => Db.ExecuteQuery("insert into temptbl (userid,attflag,checktime,username)values('" + 
                    data.UserId + "','" + data.Flag + "','" + data.AttendanceDate + "','" + 
                    data.Name + "')")); 

enter image description here

+0

Это может показаться ошибкой в ​​OleDb Provider. Какой это поставщик? –

+0

Кроме того, вы пробовали это без параллелизма? –

+0

Может быть, эта ссылка поможет вам http://michaelsync.net/2009/10/31/net-runtime-version-2-0-50727-3603-fatal-execution-engine-error-7a036050-80131506-mscoree-dll – coder

ответ

4

объектов подключения к базе данных не поточно-и не предназначены для использования в несколько потоков одновременно.

Вы не должны распараллеливать код через одно соединение, вместо этого вам потребуется отдельное соединение для каждого отдельного потока, и поэтому вы не можете использовать Parallel.ForEach.

Вы можете увидеть это документировано на MSDN:

OleDbConnection Class, раздел Thread Safety (в нижней части):

Любые открытые (Shared в Visual Basic) члены этого типа являются потокобезопасными. Любые члены экземпляра не гарантируют безопасность потоков.

Это означает, что статические члены этого типа являются поточно-, экземпляр-члены не являются, а это означает, что данный тип как объект не будет потокобезопасным.

Смежные вопросы