我有一个从特定plc的内存中读取的线程,它运行得很好。现在我想要的是启动另一个线程来测试系统的行为(模拟第一个线程),如果出现连接问题,当一切都OK时,继续第一个线程。但我想我会遇到问题,因为这两个线程需要使用相同的端口。
我的第一个想法是中止第一个线程,启动第二个线程,当所有内容再次正常时,中止此线程并“重启”第一个线程。
我已经阅读了其他一些论坛,人们说中止或暂停线程是最糟糕的解决方案,我已经阅读了关于线程的同步,但我真的不知道这在这种情况下是否有用因为我从来没有用过它。
我的问题是,解决这种情况的正确方法是什么?
答案 0 :(得分:0)
您有一个共享资源,您需要协调线程访问。 .NET中有许多可用于协调的机制。
有一个很棒的资源,可以在.NET中介绍线程概念,并以平易近人的方式讨论高级概念
http://www.albahari.com/threading/
在您的情况下,请查看锁定部分
独占锁定用于确保一次只有一个线程可以输入特定的代码段。两个主要的独有锁定结构是锁和Mutex。在这两者中,锁构造更快更方便。但是,Mutex有一个利基,因为它的锁可以跨越计算机上不同进程的应用程序。
http://www.albahari.com/threading/part2.aspx#_Locking
您可以构建两个线程,以便它们必须获取特定的锁才能使用该端口。在启动第二个线程之前让你的第一个线程释放锁定,然后让第一个线程再次获取该锁定(第二个线程将一直保持直到完成)。