用c#做了一个上位机,需求是:发指令,接收数据,判断数据,结束后再循环。
现在出现的问题是:发送指令后,DataReceived马上接收到数据,因为时间很短,后面的数据判断还没有完成,第2条指令就来了,导致判断出错。我不得不在发每一条指令后sleep2秒,但是这样的后果就是程序走得很慢。
看到网上说,可以用Lock,当DataReceived收到第一条完整的数据就lock,然后去处理数据,处理完之后再释放,继续下一条。
小白一个,那怎么用lock?
private static readonly object syncObj = new object(); private void DataRetrieved() { lock(syncObj) { // your code. } }
//创建lock锁对象
private static object locker=new object();
public void DataRetrived()
{
lock(locker)//开始锁定
{
//你所需要的操作比如:
Console.writeline("你好吗");
}
}