我建立一個簡單的WPF應用程序。 gui有一個按鈕,當按下時, 會創建一個後臺線程。 websocket服務器將在這個後臺線程上運行。 websocket服務器是事件驅動的。有可能是這個服務器, 低活動的週期,但我不想線程由於低容積終止。是否有一個簡單的方法可以使這個線程持久化(至少在應用程序終止之前)?持久線程執行
Q
持久線程執行
0
A
回答
1
爲什麼線程終止由於低量?線程只會在您告訴時終止。即使您的應用程序和表單已關閉,後臺線程仍可能仍會運行。
我在線程中有一個TCPServer類(它使用TCPListener),並且由於後臺線程可以在AcceptTcpClient()(這是阻塞和無限循環)中被阻塞,TCPListener必須手動關閉:
public partial class MainForm : Form
{
public TCPServer TCPServer = new TCPServer();
private Thread ServerThread = null;
private void button1_Click(object sender, EventArgs e)
{
ServerThread = new Thread(TCPServer.Run);
ServerThread.Start();
}
private void OnApplicationExit(object sender, EventArgs e)
{
if (TCPServer.Server != null)
TCPServer.Server.Stop();
}
}
+2
由於未處理的異常,線程也可以終止。 –
+0
謝謝羅姆茲(和其他人回覆)。它可能會由於低音量(除非存在Keepalive)而超時,但該線程應該保留。 –
相關問題
- 1. C#線程,線程不持久
- 2. 線程在執行後保持存活
- 3. 作業執行和持久性
- 4. 執行後切換持久性框架?
- 5. 使用多線程的JPA持久性
- 6. java中的多線程持久隊列
- 7. Android工作線程持續多久?
- 8. 線程執行
- 9. 阻止Workflow Foundation 3.5持久執行工作流程的方法
- 10. 持久線程vs設備端入隊/嵌套並行
- 11. Firebase for Unity - 離線持久
- 12. JQueryMobile MVC和離線持久
- 13. 學說2,需要執行代碼前持久性/後持久性
- 14. 執行線程onSensorChanged
- 15. 線程不執行
- 16. .net線程執行
- 17. 而線程執行
- 18. 持久AWK程序
- 19. 通過ssh運行持久化進程
- 20. 執行並行線程池
- 21. 執行線程'平行'
- 22. Linux線程執行流程
- 23. 執行多線程進程
- 24. 執行多線程程序
- 25. 線程池執行程序
- 26. Android線程 - 在執行所有其他線程之前執行一個線程
- 27. C++線程的執行時間和執行線程在另一個線程
- 28. std ::線程何時執行線程?
- 29. 蟒蛇如何保持一個線程執行,直到其他線程完成
- 30. 保持子線程運行
只要線程不退出,它會持續 –
@PeterRitchie除非整個應用程序池被回收,其可以是列於共享主機顯影劑控制。 UPD。對不起,它的作品「直到應用程序終止」。 – aiodintsov
Walter,「應用程序終止前」是什麼意思?如果配置如此,IIS池可按計劃進行回收。您可以通過WebClient將其稱爲自己的保持活動狀態,但要保持運行狀態),但仍可能會被迫回收。 – aiodintsov