我要在程序中读一张卡,主要分成四个过程,
1.读卡器的初始化。InitDev;
2.检测是否有卡插入。CheckCard;
3.读取卡上数据。ReadCard;
4.读卡器的关闭。CloseDev;因为检测是否有卡插入是一个循环过程,所以我想把它放到一个线程里去检测,
而且等一切结束了,要保存读卡的数据,还要关闭本窗体,然后开起另外一个窗体。请问这4个过程该怎么安排才比较合理???

解决方案 »

  1.   

    如果是我, 根據你給的條件, 我會將1, 2, 3, 4做到一個線程中, 
    然後, 循环檢測: 2.检测是否有卡插入
    如果找到了, 就: 3.读取卡上数据。ReadCard;
    并用個事件, 或消息通知主線程 or 其它, 將讀到的數據發過去
      

  2.   

    // aiirii(ari-爱的眼睛) 按照你说的,假设说,读到数据后,发消息给主线程的话,那么线程中应该开始执行4过程对设备进行关闭操作,而同时主线程中就要处理发过来的消息,并且要关闭本窗体。如果像我说的,关闭本窗体,开启另外一个窗体,这样不会有什么问题。但是如果,关闭本窗体,程序退出的话,这时4过程有没有执行完,线程资源有没有释放,这些都不知道,这该怎么处理???
      

  3.   

    我的理解, 一般
    1.读卡器的初始化。InitDev;
    4.读卡器的关闭。CloseDev;
    只會在程序運行中執行一次, 或者比較少的開關, 而:
    2.检测是否有卡插入。CheckCard;
    3.读取卡上数据。ReadCard;
    會多次執行, 連續執行:如果我不理解錯的話, 
    >>那么线程中应该开始执行4过程对设备进行关闭操作,
    你這句我就不理解了, 你每次讀到數據後, 就要關閉????一般, 我也做過類似的, 我將硬件通訊做到一個線程, 收到數據後, 直接發給主窗體(其它也類似), 這樣保證通信部分的快速反應, 
    至于數據處理, 則由另外一個獨立部分處理, 有要改動的時候, 也比較清楚!>>但是如果,关闭本窗体,程序退出的话,这时4过程有没有执行完,
    你在程序退出時, 要釋放線程啊, 當然沒問題! 我覺得, 不大存在:4过程有没有执行 的可能將1,2,3,4放到一起, 主要是管理方便, 要不然, 你要將設備ID之類的傳來傳去, 或用全局變量保存, 都會帶來一些負面的效果!如果你的1,2,3,4是一次連續執行的, 那你可每次產生一個新的線程, 結束原來的就可
      

  4.   

    我打算这样处理,
    过程1放到线程初始化里,
    2,3放到线程执行过程里,
    4放到OnTerminate事件中,或者析构函数里,主线程接收到消息后,进行数据处理。你觉得这样设计合不合理,有没有安全方面的问题???
      

  5.   

    根據你的情況,我的建議:"只有流程走到用户登陆的时候,才执行这四个步骤",那麼,線程開始檢測2.检测是否有卡插入。CheckCard;3.读取卡上数据。ReadCard;讀到卡執行4.读卡器的关闭CloseDev;其實跟ARI差不多,以前都是這麼寫的。
      

  6.   

    to l_xiaofeng(流水不腐)你的意思是说,这些过程在线程的执行函数中顺序执行就可以了,对么?