我在我的WP8项目中使用Linq来sql进行数据库操作。当另一个线程在该数据库上执行操作时,是否有一种常用的方法来执行等待操作?有时我得到一个未处理的异常将终止App,因为有待处理的操作。
答案 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
块中,您将确保一次只有一个线程可以访问它。