停止阻塞呼叫的线程

Swa*_*and 5 c# thread-safety blocking winforms

我正在开发一个Windows窗体应用程序,以便在通过USB连接的设备上执行少量操作.对于所有操作,如读取,写入和其他操作,我们有一个自定义库.

用户点击按钮时完成写操作.

要读取,将创建一个单独的线程.可用库的问题是Read调用是阻塞的并且具有INFINITE Timeout.

如果连接失败,该线程会在Read函数调用时停止,因为只有在收到数据时此函数才会中断.

在这种情况下杀死这个线程的方法是什么?Thread.Abort()不起作用.

我正在使用C#进行编程.

Ale*_*lek 1

您的 Read 方法可能会调用本机代码,因此线程无法中止。没有办法(至少我熟悉)来中止使用 COM 互操作的线程。您可以看看为什么 Read 方法首先阻塞线程。在调用 Read 方法之前尝试检查要求。

看看这个问题:Abort call to unmanaged DLL