gpt4 book ai didi

c# - 在 asp.net 页面和页面创建的后台线程之间共享变量

转载 作者:太空宇宙 更新时间:2023-11-03 11:36:23 25 4
gpt4 key购买 nike

我在我的 asp.net web 应用程序中有一个长时间运行的任务,因此我在一个新线程中运行该任务并不断轮询以检查线程的状态(通过使用每 5 秒滴答一次的自动收报机控件和回发到服务器并检查线程的状态)。我使用 session 状态在线程和页面之间共享变量。但是我了解到从后台线程访问 session 是一种不好的做法。在线程和创建该线程的 asp.net 页面之间共享变量的最佳方法是什么?

最佳答案

我本身并没有发现使用 Session 的问题 - 它基本上是一个 thread-safe dictionary .您可能需要确保您的后台线程 locks SyncRoot ; Page 类会自动执行此操作。

当然,还有其他选项 - 静态变量(但随后您会遇到 AppDomain 问题)或带外机制(这就是 session ),如数据库或消息服务。不过,除非您对这些技术有其他需求,否则 Session 可能是最简单的。

我能想到的几个注意事项:

  • 如果 Session 过期,从后台线程写入时会发生什么?异常(exception)?让它活着?
  • 如何检测后台线程异常退出?将线程存储在 Session 中?
  • 如果存在 unhandled exception on the background thread,Session 会发生什么? ?

关于c# - 在 asp.net 页面和页面创建的后台线程之间共享变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6152644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com