0

我知道有很多关于这方面的问题,但他们都没有和我一起工作。所以问题是我有一个线程正在读取一些 MODBUS 设备,我希望能够开始/停止读取。选择连接时,我启动线程,选择断开连接时,我中止了线程。当我启动中止的线程时,我收到以下异常:

System.Threading.ThreadStateException:线程已经启动。在 System.Threading.Thread.Start () [0x00000] 在 Vyshka.MainClass.Main ( System.String[] args) [0x00096] 在 /home/Vyshka/Main.cs:53

4

3 回答 3

1

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

顺便说一句,您应该(几乎)永远不要中止线程。在 Stack Overflow 上有很多关于这个的讨论,这将解释为什么这会让你的程序天生就坏掉。

于 2012-10-29T09:54:18.967 回答
1

中止线程通常不是一个好主意,更不用说尝试重新启动已中止的线程 - 一旦线程中止,就无法从中恢复,因此您尝试做的事情将不起作用。而是每次都生成一个新线程,并让旧线程单独中止。

或者,将 login 放入控制读取设备/从MODBUS设备读取的线程中,这样您根本不需要中止线程。

于 2012-10-29T09:54:29.873 回答
0

该问题的最佳解决方案是将变量 N​​ULL 化,然后为其分配一个新指针。

于 2012-10-29T10:14:37.307 回答