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

Vb.net 使用第三方Ingear.Net.dll的死锁?,vb.net,multithreading,deadlock,Vb.net,Multithreading,Deadlock,我正在使用Ingeardrivers.com上的.dll。我意识到这个问题在那个网站上被问到会更合适,也会被贴到那个网站上,但这里的人越多,我得到答案的机会就越大 我是一个新手程序员,这是我第一次体验线程。基本上,我的程序中有两个主循环,当我单独将每个循环作为“主线程”运行时,它们各自都可以正常工作。问题是,当我启动两个线程并在这些线程内运行主循环时,在循环中的某个点上,它们都试图使用Ingear.net dll,当一个循环已经创建了类的实例时,第二个循环就位于构造函数上,不做任何事情 有人对如

我正在使用Ingeardrivers.com上的.dll。我意识到这个问题在那个网站上被问到会更合适,也会被贴到那个网站上,但这里的人越多,我得到答案的机会就越大

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


有人对如何解决这个问题有什么建议吗

我建议您首先与供应商确认库是否是线程安全的

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


它很可能不起作用,但在尝试之前您不会知道。该附加组件是线程安全的-

我每次都是通过“controllername.disconnect()”手动断开控制器的连接 由于某种原因,这实际上并没有关闭连接,我在CIP连接上的时间已经用完了。当我把它取下来的时候,控制器不知怎的知道自己断开了


很奇怪,但它确实有效

你能和.dll供应商核实一下这个库是否是线程安全的吗?