簡體   English   中英

C#暫停/終止/中止/中止線程

[英]C# Pause/Kill/Stop/Abort a thread

我知道有很多關於這方面的問題,但他們都沒有和我合作過。 所以問題是我有一個線程正在讀取一些MODBUS設備,我希望能夠啟動/停止讀取。 當選擇連接時,我啟動線程,當選擇斷開連接時,我中止線程。 當我啟動被中止的線程時,我收到以下內容:

System.Threading.ThreadStateException:Thread已經啟動。 at(wrapper managed-to-native)System.Threading.Thread:Thread_internal(System.Threading.Thread,System.MulticastDelegate)位於System.Threading.Thread.Start()[0x00000] in:0 at Vyshka.MainClass.Main( /home/Vyshka/Main.cs:53中的System.String [] args)[0x00096]

創建一個新線程。 您無法重新啟動線程。

順便說一句,你應該(幾乎)永遠不會中止一個線程。 Stack Overflow上有很多關於它的討論,這將解釋為什么這會讓你的程序內在破壞。

中斷線程通常絕不是一個好主意,更不用說嘗試重新啟動中止線程了 - 一旦線程中止就無法從中恢復,所以你嘗試做的事情將無法正常工作。 而是每次生成一個新線程,讓舊線程孤立地中止。

或者,將login登錄到控制MODBUS設備讀取的線程中,這樣您根本不需要中止線程。

該問題的最佳解決方案是NULL-ify變量,然后為其分配一個新指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM