0

我在插入数据时收到以下警告。

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

在此处输入图像描述

4

1 回答 1

4

数据库连接对象不是线程安全的,也不打算同时在多个线程中使用。

您不应该在单个连接上并行化代码,而是需要为每个不同的线程建立一个单独的连接,因此您不能使用Parallel.ForEach.

您可以在 MSDN 上看到此文档:

OleDbConnection 类,线程安全部分(靠近底部):

此类型的任何公共静态(在 Visual Basic 中为 Shared)成员都是线程安全的。不保证任何实例成员都是线程安全的。

这意味着这种类型的静态成员是线程安全的,而实例成员不是,这意味着作为对象的类型将不是线程安全的。

于 2013-08-08T12:51:45.563 回答