【发布时间】:2012-08-24 03:04:23
【问题描述】:
我正在开发一个 Windows 窗体应用程序,以便在通过 USB 连接的设备上执行一些操作。对于读取、写入等所有操作,我们有一个自定义库。
当用户点击一个按钮时,写操作就完成了。
要阅读,会创建一个单独的线程。可用库的问题是读取调用被阻塞并且具有无限超时。
在连接失败的情况下,这个线程卡在读取函数调用,因为这个函数只有在它接收到数据时才会中断。
在这种情况下杀死这个线程的方法是什么? Thread.Abort() 不起作用。
我正在使用 C# 进行此编程。
【问题讨论】:
-
如果“自定义库”没有提供 any 方法来取消对失败连接的阻塞读取,您应该将其丢弃并使用不同的东西,老实说。跨度>
-
我知道....我希望我能...但是 C# 的默认串行端口类也是如此...如果我将 Timeout 设置为 Infinte,读取操作将停留在失败的连接上.
-
您可以尝试将“句柄”关闭到您尝试从中读取的任何内容...然后读取将被取消我应该猜...并且您的线程取决于它的写入方式可能会退出。
标签: c# winforms thread-safety blocking