我有一个异步服务器,它接收来自应用程序的数据请求,服务器为每个请求生成一个线程,该线程关闭并执行逻辑,并在完成后向应用程序发送一个回复。
数据逻辑来自于打算在本地机器上运行的软件的不同版本。在客户端处理请求,并从SQL服务器流数据。因此,所有使用的表适配器都是静态的,在这种情况下可以工作,但会给我的应用程序带来一些问题。
应用程序请求数据,但是实际的表适配器逻辑是在服务器上完成的,因此我们有多个线程访问同一个表适配器,并抛出有关位置的异常。
我很困惑,我试着为每个唯一的线程请求实例化一个新适配器,但是它会导致一个“命令已经被打开的表适配器使用”。我还尝试为访问静态适配器的函数生成一个新的AppDomain,但是它们最终什么也不做/崩溃(不太确定,因为我似乎无法跟踪它们)。
简而言之,尝试跨多个线程访问静态表适配器。任何建议都是有帮助的,但是重写数据逻辑并不是真正可行的。我很乐意根据请求为不同的片段提供代码,但目前它似乎只是一个理论问题。
发布于 2014-01-22 06:26:03
如果只有一个适配器,那么一次只能使用一个线程。因此,您需要同步对它的访问,以便每次只有一个线程访问它。您可以在包含“lock”语句的方法中包装对适配器的访问,从而阻塞任何后续线程,直到当前线程完成为止。
https://stackoverflow.com/questions/21275406
复制相似问题