我正在开发一个 Windows 窗体应用程序,以便在通过 USB 连接的设备上执行一些操作。对于读取、写入等所有操作,我们有一个自定义库。
当用户点击一个按钮时,写操作就完成了。
要阅读,会创建一个单独的线程。可用库的问题是读取调用被阻塞并且具有无限超时。
在连接失败的情况下,这个线程会停留在读取函数调用,因为这个函数只有在它接收到数据时才会中断。
在这种情况下杀死这个线程的方法是什么?Thread.Abort() 不起作用。
我正在使用 C# 进行此编程。
我正在开发一个 Windows 窗体应用程序,以便在通过 USB 连接的设备上执行一些操作。对于读取、写入等所有操作,我们有一个自定义库。
当用户点击一个按钮时,写操作就完成了。
要阅读,会创建一个单独的线程。可用库的问题是读取调用被阻塞并且具有无限超时。
在连接失败的情况下,这个线程会停留在读取函数调用,因为这个函数只有在它接收到数据时才会中断。
在这种情况下杀死这个线程的方法是什么?Thread.Abort() 不起作用。
我正在使用 C# 进行此编程。
您的 Read 方法可能会调用本机代码,因此线程无法中止。没有办法(至少我熟悉)中止使用 COM 互操作的线程。你可以先看看为什么 Read 方法会阻塞线程。在调用 Read 方法之前尝试检查需求。
看看这个问题:Abort call to unmanaged DLL