Sql Server CE 是否支持多线程?
我需要知道 SQL Server CE 是否支持多线程(使用一个连接)。
因此,如果我创建一个 SQL Server CE 连接,然后在两个不同的线程中使用该连接来调用该连接的更新/插入/删除操作,SQL Server CE 会“正常”还是有时会阻塞?
(我遇到间歇性写入错误,我不确定这是由于多线程访问还是其他原因。)
I need to know if SQL Server CE supports Multithreading (using one connection).
So if I create a SQL Server CE connection and then use that connection in two different threads to call an update/insert/delete to the connection, will SQL Server CE be "OK" with that or will it choke sometimes?
(I am getting an intermittent write error and I am not sure if it is because of multithreaded access or if it is something else.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您必须为每个线程创建一个连接对象,这对于多线程来说不安全 - http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceconnection(v=VS.100).aspx
You must create a connection object per thread, it is not safe for multithreading - http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceconnection(v=VS.100).aspx
是的,sqlserverce 不是多线程安全的。
最好的也是最懒的方法是每次调用插入、更新任务时对对象执行锁定,执行必要的操作,然后释放该锁定。
我有一个类根据计时器、事件(连接到交流电源线的 pda)进行一些插入(在数据库中输入 GPS 坐标),以及另一个计时器通过 gprs 将这些数据发送到网络服务。最终结果:sql崩溃,原因是它不是多线程安全的。
经过一番研究,发现这篇文章 C 线程跨线程共享数据对我的案例有帮助。
Yep sqlserverce is not multi-thread safe.
The best way to and the laziest one is to each call for an insert, update task do an lock to an object , do the necessary operation and then release that lock.
I had an class does some insertions (entering an gps coordinate in the db) depending on an timer, on an event (pda connected to the ac powerline), and the another timer to send those data to an webservice via gprs. Final result: sql crashed, reason it is not multi-thread safe.
After some research, found this article C Threading Sharing data across threads that helped in my case.