线程安全访问SQL CE数据库的方法

时间:2012-02-08 15:06:14

标签: c# windows windows-phone-7 sql-server-ce

背景:

在我的Windows手机项目中。我使用本地SQL CE数据库来存储日期。以编程方式使用LINQ to SQL创建数据库表。

通过几个线程中的各种datacontext实例访问此数据库。

问题在于:

我为我的应用程序的用户提供了一个选项,可以删除所有数据并注销。当用户选择此项时,我使用datacontext的DeleteDatabase方法删除数据库。但是,我总是收到另一个进程正在使用数据库的错误,因此无法删除。

任何正确方向的推动都将成为我的一天。

1 个答案:

答案 0 :(得分:2)

Andy如上所述(说实话他们打败了我)问题是当另一个进程仍然打开了连接时访问数据库。基本上,可以通过将对数据库运行的任何代码放在使用块中来轻松修复,如下所示:

using (MyDataContext db = new MyDataContext("isostore:/MyData.sdf"))
{
    //Run database logic here
}

我认为从某种意义上说,这对错误很有意义。 WP7中的打开文件也会发生同样的事情。

有关详情和示例,请查看此page