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一段时间,