等待另一个线程上的db操作

时间:2013-09-09 07:16:46

标签: windows-phone-7 windows-phone-8 sql-server-ce windows-phone

我在我的WP8项目中使用Linq来sql进行数据库操作。当另一个线程在该数据库上执行操作时,是否有一种常用的方法来执行等待操作?有时我得到一个未处理的异常将终止App,因为有待处理的操作。

1 个答案:

答案 0 :(得分:2)

使用锁定机制。

首先,在班级中创建一个对象:

private object syncRoot = new object();

然后,将代码的所有关键部分括在lock块内:

lock (this.syncRoot)
{
    // This section of code will be executed by only one thread at a time
}

lock块内的所有代码一次只能由一个线程执行。如果两个线程尝试执行它,其中一个线程将自动等待,直到另一个线程退出该块。通过将所有数据库操作包装在lock块中,您将确保一次只有一个线程可以访问它。