日期:2014-05-16  浏览次数:20699 次

C# 控制 WndProc()接收处理消息的频率
      我用终端机扫描信息后 打印扫描的信息  但是由于机器太灵敏   他会出现一秒内扫描很多次 导致会打印出多条 一样的信息
  我现在想10秒内 只能处理一次 该怎么弄?。
代码如下: 
DateTime? lastScanTime = null;
            protected override void WndProc(ref Message msg)
        {
           try
            {
               
                if (lastScanTime == null)
                {
                    lastScanTime = DateTime.Now;
                }
                else
                {
                    TimeSpan span = DateTime.Now - lastScanTime.Value;
                    if (span.Seconds < 10)
                        return;
                }
               
                    if (msg.Msg == WM_SCANCODE_ENGINE_NOTIFY)   // BarCode的自定义消息通知
                    {
                     
                        uint nDataLen = 0; //= (int)msg.WParam;
                        uint nBarCodeType = 0;// = (uint)msg.LParam;
                        byte[] BarCodeData;
                        barcode.GetBarCodeReaderRes(ref nBarCodeType, ref  nDataLen, null);
                        if (nDataLen > 0)
                        {
              &nbs