多线程数据实体

本文关键字:实体 数据 多线程 | 更新日期: 2023-09-27 17:49:30

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

我看了EF,但它不是线程安全的意思,当更新将从服务器到达时,我需要锁定我的EF并更新它,当用户在EF内部的数据上工作时再次更新它。

有什么方法可以更容易地做到这一点,而不让程序员每次锁定/解锁数据?

多线程数据实体

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

这里有一些你可以在使用EF时应用的东西:

  1. 不要使用锁的唯一上下文(没有单例模式)。
  2. 每个请求实例化并处理一个上下文和一些并发性控制系统
  3. 尽量避免上下文锁。