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



背景:

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

这个数据库是通过几个线程中的各种数据上下文实例访问的。

问题是:

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

任何朝着正确方向的轻推都会让我高兴。

Andy如上所述(老实说,他们打败了我),问题是在另一个进程仍打开连接时访问数据库。基本上,它可以很容易地通过将您在数据库中运行的任何代码放在使用块中来修复,比如:

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

我想从某种意义上说,这对错误来说是完全合理的。WP7中打开的文件也会发生同样的情况。

有关更多信息和示例,请查看此页面。