死锁使用第三方Ingear.Net .dll?

时间:2012-11-12 21:05:31

标签: vb.net multithreading deadlock

我使用的是Ingeardrivers.com的.dll。我意识到这个问题会更恰当地在该网站上被提出并且已经发布到那里,但是更多的人在这里让我有机会更好地得到答案。

我是一名新手程序员,这是我第一次使用线程。基本上我的程序中有两个主循环,当我将每个循环作为“主线程”运行时 - 它们都可以单独工作。问题是当我启动两个线程并在这些线程中运行主循环时,在循环中的某个点它们都试图使用Ingear.net dll并且当一个循环已经创建了类的实例时,第二个循环只是坐在构造函数上,并没有做任何事情。

有没有人对如何解决有任何建议?

2 个答案:

答案 0 :(得分:1)

我建议您先咨询供应商,看看该库是否是线程安全的。

但与此同时,您可以尝试创建类的单个实例,并将其作为构造函数的一部分传递给您的两个线程/循环(或使用它设置属性)。

这很可能不起作用,但在你尝试之前你不会知道。

答案 1 :(得分:0)

附加组件是线程安全的 -

我每次通过'controllername.disconnect()'手动断开控制器的连接 出于某种原因,这实际上没有关闭连接,我在CIP连接上达到最大限度。当我删除它时,控制器以某种方式知道自己断开连接。

奇怪但是有效。