1

我想重写我目前在 WinForms 上使用 DataSets 的程序并将其移动到 WPF。目前,该程序正在为用户使用 Citrix 以便登录。现在,当有人对数据执行某种操作时,主线程正在提交 BI 的更改并将其发送回服务器,或者从服务器获取新数据(或修改的数据)并将其添加到缓存中。今天的问题是,每次用户处理数据或消息从服务器到达时,都会大量使用锁定和解锁。我正在寻找一个数据实体或某种方式来在我的客户端进行多线程工作。这意味着我希望每个线程都能够在数据上提交 BI 并与服务器通信,同时与所有其他用户及其更改同步。

我查看了 EF,但它不是线程安全的,这意味着当更新将从服务器到达时,我需要锁定我的 EF 并在用户处理 EF 内的数据时再次更新它。

有什么方法可以更轻松地做到这一点,而无需让程序员每次都锁定/解锁数据?

4

1 回答 1

2

如果您正在创建多线程应用程序,则无法避免锁定。

这是您在使用 EF 时可以应用的几件事:

  1. 不要使用带有锁的唯一上下文(没有单例模式)。
  2. 每个请求和一些并发控制系统实例化和处理一个上下文
  3. 尽可能避免锁定上下文。
于 2012-12-26T14:13:28.720 回答