2017-07-27 70 views
0

我需要在ASP.net Web App中执行一些TCP通信。ASP.net生命周期中的线程处理

我已经构建了一个使用winforms与服务器通信的代码的工作原型。我现在将这个代码实现到我的Web应用程序中,而我不确定最好的方法是做什么。

这个问题是针对与ASP页面生命周期有关的线程生命周期。

我想引发一个执行TCP连接并侦听来自TCP服务器的事件的线程。

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

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

我正在尝试不同的选项,但我想获得一些关于“正确”方式来实现我的最终结果的想法。我的线程将用从TCP服务器进入的相关数据更新应用程序变量。数据在这个网络应用程序的多个页面中使用。

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

+0

可能重复[如何在asp.net中使用线程?](https://stackoverflow.com/questions/14296188/how-to-use-threads-in-asp-net) – mjwills

+4

你会更好托管在Windows服务比在Asp.Net所以你不必担心自己定期卸载appdomain。你最后的手段应该是你的第一个度假胜地。 – Amy

+2

在IIS中运行的网站不是这样做的地方。创建一个连接到TCP主机并在本地保存更新的服务(某种数据库?)然后让网站查询。 – Will

回答

1

为了解决你的问题:

如果我从我的ASP.net web应用程序产生一个线程,这是什么的线程的生命周期?

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

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

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

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

查看上一个回答。

同样,我建议你不要采取这种方式并在Windows服务中实现你的线程场景。