C#暂停/终止/中止/中止线程

时间:2012-10-29 09:50:14

标签: c# multithreading

我知道有很多关于此的问题,但他们都没有和我合作过。 所以问题是我有一个线程正在读取一些MODBUS设备,我希望能够启动/停止读取。当选择连接时,我启动线程,当选择断开连接时,我中止线程。当我启动被中止的线程时,我收到以下内容:

  

System.Threading.ThreadStateException:线程已经启动。       at(wrapper managed-to-native)System.Threading.Thread:Thread_internal       (System.Threading.Thread,System.MulticastDelegate)       在System.Threading.Thread.Start()[0x00000]中:0       在/home/Vyshka/Main.cs:53中的Vyshka.MainClass.Main(System.String [] args)[0x00096]

3 个答案:

答案 0 :(得分:1)

创建一个新线程。你无法重启线程。

不过,你应该(几乎)永远不会中止一个帖子。 Stack Overflow上有很多关于它的讨论,这将解释为什么这会让你的程序固有地破坏。

答案 1 :(得分:1)

中止线程通常绝不是一个好主意,更不用说尝试重新启动一个中止的线程 - 一旦线程中止,就无法从中恢复,所以你尝试做的事情将无法工作。而是每次生成一个新线程,让旧线程孤立地中止。

或者,将login登录到控制来自MODBUS设备的读取的线程中,这样您根本不需要中止该线程。

答案 2 :(得分:0)

该问题的最佳解决方案是NULL-ify变量,然后为其指定一个新指针。