为什么CreateFile永远持续下去?

我在我的程序中有一个线程尝试CreateFile为了locking一个USB设备,但是,有时,而不是失败,它需要永远。 有没有其他人遇到过这个问题? 有什么办法可以设置此function的超时? 代码是这样的:

 string file = @"\\.\" + DriveLetter[0] + ":"; handle = CreateFile(filename, GENERIC_READ, FILE_SHARE_WRITE, IntPtr.Zero, 0x3, 0, IntPtr.Zero); 

谢谢。

你想锁定它,使其无法访问 – 作为一个设备,或“阻止”它(例如它是一支笔)?
编辑:抱歉,我不允许添加评论:S
无论如何。 如果锁定很重要,可以使用devcon轻松完成: http : //support.microsoft.com/kb/311272
,以及一个示例代码:
http://www.programmersheaven.com/mb/dotnet/337951/337951/programatically-enable–disable-usb-port-using-cnet/
如果你不想一直用params来使用exe。

永远的采取似乎与主要形式线索有某种冲突。

最后,我将包含CreateFile操作的锁定函数移动到一个单独的线程,它不会与UI线程竞争,现在它工作正常。