【问题标题】:Threading in ASP.net life cycleASP.net 生命周期中的线程
【发布时间】:2017-07-27 21:52:38
【问题描述】:

我需要在 ASP.net Web 应用程序中进行一些 TCP 通信。

我已经构建了我的代码的工作原型,它使用 winforms 与服务器通信。我现在将在我的网络应用程序中实现此代码,但我不确定最好的方法是什么。

这个问题专门针对与 ASP 页面生命周期相关的线程生命周期。

我正在考虑启动一个执行 TCP 连接并监听来自 TCP 服务器的事件的线程。

如果我确实从我的 ASP.net Web 应用程序中生成了一个线程,那么这个线程的生命周期是什么?当重新创建页面生命周期和回发、刷新等时,它会继续“孤立”运行吗?或者当在回发/刷新时重新创建生命周期时,页面会以某种方式清理它吗?

我希望运行我的线程,直到我想手动停止它。

我正在尝试不同的选项,但我想获得一些关于实现最终结果的“正确”方法的想法。

(附注:我的线程将使用来自 TCP 服务器的相关数据更新应用程序变量)。要在此 Web 应用的多个页面中使用的数据。

我的其他想法是运行一个独立的桌面应用程序/服务来收集数据并将其合并到 IIS 应用程序池会话中。 (但这是我最后的手段)

【问题讨论】:

  • 您最好将其托管在 Windows 服务中而不是在 Asp.Net 中,这样您就不必担心 appdomain 会定期卸载。你最后的手段实际上应该是你的第一个手段。
  • 在 IIS 中运行的网站不适合这样做。创建一个连接到 TCP 主机并在本地保存更新(某种数据库?)的服务,然后让网站查询。
  • 谢谢大家。我知道我最后的手段应该是我的第一个(在一个完美的世界里)。然而,我想做的是压缩我的应用程序足迹。在某个时候,我想将此应用程序作为产品提供,并且我不希望需要处理不同的组件。特别是在可能托管的环境中。如果事实证明这是一个问题,我将恢复为单独的服务。谢谢。

标签: c# asp.net .net multithreading tcp


【解决方案1】:

解决您的问题:

如果我确实从我的 ASP.net Web 应用程序中生成了一个线程,那么这个线程的生命周期是什么?

它会一直运行直到它完成,或者直到进程完成,或者直到你明确告诉它结束。这与任何其他应用程序中的线程相同。

当重新创建页面生命周期并进行回发、刷新等操作时,它会继续“孤立”运行吗?

页面生命周期是完全无关的。该线程将继续独立于页面运行。

或者当生命周期在回发/刷新时重新创建时,页面会以某种方式清除它吗?

查看上一个答案。

再次,我建议您不要走这条路线,并在 Windows 服务中实现您的线程场景。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-12
    • 2016-09-08
    • 1970-01-01
    • 2011-03-03
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    相关资源
    最近更新 更多