2017-07-27 72 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服務中實現你的線程場景。