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

背景:

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

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

这是问题:

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

任何向正确方向的推动将使我的一天。

Solutions Collecting From Web of "线程安全的方式来访问SQL CE数据库"

安迪如上所述(说实话,他们打我)问题是访问数据库时,另一个进程仍然打开连接。 基本上它可以很容易地通过将任何代码放在一个使用块中的数据库中来解决,如下所示:

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

我想从某种意义上说,这个错误是非常有意义的。 WP7中的打开文件也会发生同样的情况。

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