Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 7 等待另一个线程上的db操作_Windows Phone 7_Windows Phone 8_Sql Server Ce_Windows Phone - Fatal编程技术网

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

Windows phone 7 等待另一个线程上的db操作,windows-phone-7,windows-phone-8,sql-server-ce,windows-phone,Windows Phone 7,Windows Phone 8,Sql Server Ce,Windows Phone,我在WP8项目中使用LINQtoSQL进行数据库操作。当另一个线程正在该数据库上执行操作时,是否有一种常见的方法来执行等待操作?有时我会收到一个未处理的异常,该异常将终止应用程序,因为存在挂起的操作 使用锁定机构 首先,在类中创建一个对象: private object syncRoot = new object(); 然后,将代码的所有关键部分封装在锁块中: lock (this.syncRoot) { // This section of code will be executed

我在WP8项目中使用LINQtoSQL进行数据库操作。当另一个线程正在该数据库上执行操作时,是否有一种常见的方法来执行等待操作?有时我会收到一个未处理的异常,该异常将终止应用程序,因为存在挂起的操作

使用锁定机构

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

private object syncRoot = new object();
然后,将代码的所有关键部分封装在
块中:

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

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

hi KooKiz感谢您的快速回答。不允许在异步函数中锁定,我使用它来更新UI元素,如列表。因此,访问数据库是非常分散的。但我要试试,谢谢@ElMarchewko检查此链接:查找锁定异步块的方法。