日期:2014-05-17  浏览次数:20897 次

sleep延迟问题
[code=C#][/code]
 while (bThread)
  {
  Uii_str = "";  
  if (Public.RmuGetReceived(phCom, blen, buii))
  {
  for (i = 0; i < blen[0]; i++)
  {
  Uii_str += (buii[i] >> 4).ToString("X");
  Uii_str += (buii[i] & 0x0F).ToString("X");
  }

  saveMark(Uii_str);
   
  //bsTag = Uii_str;

  //在主窗口中显示数据  
  // add by Hoctor Meng
  Fn.PlaySound.Play(okSoundPath);

  ActingThread AcT = new ActingThread(ShowLv);

  this.BeginInvoke(AcT, new object[] { 0, Uii_str, "", "" });
  //Thread.Sleep(1000); //此处加入sleep不好使,明显的RmuGetReceived()一直在进行读卡操作,
  //bThread = false;//如果此处加这个动作也不好使,那样RmuGetReceived()方法就会不读卡了,求达人给支招。
  MessageBox.Show("记录保存成功,Records save ok");
  }

------解决方案--------------------
C# code
        private void Delay(int Millisecond) //延迟系统时间,但系统又能同时能执行其它任务;
        {
            DateTime current = DateTime.Now;
            while (current.AddMilliseconds(Millisecond) > DateTime.Now)
            {
                Thread.Sleep(200);
                Application.DoEvents();//转让控制权     
            }
            return;
        }

------解决方案--------------------


你这个问题发了几次了,貌似是这样的
已经说了很多遍了。你在主线程里面所sleep肯定会引起这个问题
你另外的起一个线程,然后控制这个线程的关与停
------解决方案--------------------
你到底是想读卡还是不读卡?或者是先暂停一段时间不读卡,然后继续?这样sleep应该加在RmuGetReceived()之后或者之前,你再加入另一个全局变量bool bToSleep,在RmuGetReceived后判断bToShepp为真则Sleep一段时间,