怎样中止一个异步的ReadFile调用 ? 或者能够指定多少时间让它超时结束?

解决方案 »

  1.   

    我用了一个线程在后台读取,有问题。
    这里可以下载主窗体及读取线程的代码 http://www.ahjoe.net/z/usbcomm.zip
    FormShow的末尾用 
    PostMessage(WM_RESETDEVICE, 0, 0);
    给窗体自身发了个消息,窗体显示后就进行复位下位机的操作,这个步聚可正常完成,收到了下位机的回复。但如果在按钮事件中做复位下位机的操作,却收不到任何响应。
    希望高人指点!
      

  2.   

    另一个问题:后台线程,在用ReadFile读取USB口。关闭程序时会出错,我已经在程序关闭时调用了线程中止
    thread.Terminate();
      

  3.   

    用异步方式来读写。这样你可以定义一个超时,时间到了,它就会返回,你就可以知道读写成功否?查看 Overlapped 方式。
      

  4.   

    主要是你给了一大串的代码,大家又没有你那个USB设备,无法调试,也就无法找到你那个错误了。
      

  5.   

    不能用超时,否则读设备会有问题,读不到数据。
    用了最后一招,搞定了。
    给Application写了个OnAppException处理程序,不再弹出错误信息了。