【问题标题】:How to spawn a new thread from RIA Domain Service如何从 RIA 域服务生成新线程
【发布时间】:2011-05-20 16:56:17
【问题描述】:

我和我的团队正在开发一个访问“巨大”数据库的应用程序,在 8 个月内大约有 3200 万行。该应用程序是 RIA 域服务应用程序。我们优化了应用程序和数据库设计,即使在资源非常有限的机器上,响应时间也不会超过几秒钟。

但是,需要对大型记录集(每个操作至少 2-3M 记录)执行某些任务。一个示例是生成月度报告。绝对不能让应用程序等待结果,因为它会达到 30 秒超时。

在阅读了post 之后,我想我可以创建一个 [Invoke] 方法,它会产生一个新线程,从而释放客户端。该线程将负责从数据库中提取数据并将它们很好地写入 PDF。我试图实现这个场景,但是我得到了一个异常,它说底层连接已经被释放了......

这种方法正确吗?我能实现我想要做的事情,还是有一些我无法克服的问题?有没有更好的方法来做到这一点?

干杯, 詹卢卡。

【问题讨论】:

    标签: c# multithreading


    【解决方案1】:

    好的,我意识到我的问题有点愚蠢。

    据我了解,只要客户端连接,ObjectContext就存在,否则它会被释放。因为我正在编写一个不需要任何更改跟踪的 Invoke 方法,所以我通过以下方式解决了: - 从 Invoke 方法中产生一个新线程 - 在工作线程中实例化一个新的 EF 上下文 - 在单独的线程操作终止后立即处理新的 EF 上下文。

    干杯, 詹卢卡。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      相关资源
      最近更新 更多