多线程数据实体

时间:2012-12-26 13:52:45

标签: c# wpf multithreading entity-framework

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

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

有没有办法在不让程序员每次锁定/解锁数据的情况下更容易地做到这一点?

1 个答案:

答案 0 :(得分:2)

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

使用EF时,您可以使用以下内容:

  1. 不要使用带锁的唯一上下文(无单例模式)。
  2. 为每个请求和一些并发实例化和配置一个上下文 控制系统
  3. 尽可能避免锁定上下文。