停止阻塞呼叫的线程

时间:2012-08-23 10:45:52

标签: c# winforms thread-safety blocking

我正在开发一个Windows窗体应用程序,以便在通过USB连接的设备上执行少量操作。对于Read,Write等所有操作,我们都有一个自定义库。

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

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

如果连接失败,此线程会停留在Read函数调用,因为此函数仅在收到数据时才会中断。

在这种情况下杀死此主题的方法是什么? Thread.Abort()不起作用。

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

1 个答案:

答案 0 :(得分:1)

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

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