首页 新闻 会员 周边

c#DataReceived里面怎么使用lock?

0
[已解决问题] 解决于 2017-07-13 09:43

用c#做了一个上位机,需求是:发指令,接收数据,判断数据,结束后再循环。

现在出现的问题是:发送指令后,DataReceived马上接收到数据,因为时间很短,后面的数据判断还没有完成,第2条指令就来了,导致判断出错。我不得不在发每一条指令后sleep2秒,但是这样的后果就是程序走得很慢。

看到网上说,可以用Lock,当DataReceived收到第一条完整的数据就lock,然后去处理数据,处理完之后再释放,继续下一条。

小白一个,那怎么用lock?

addsds的主页 addsds | 菜鸟二级 | 园豆:226
提问于:2017-07-11 08:55
< >
分享
最佳答案
0
private static readonly object syncObj = new object();
private void DataRetrieved()
{
    lock(syncObj)    
   {
       // your code.
   }
}

 

奖励园豆:5
Hoze | 初学一级 |园豆:196 | 2017-07-11 08:59
其他回答(1)
0

//创建lock锁对象

private static object locker=new object();

public void DataRetrived()

{

  lock(locker)//开始锁定

  {

    //你所需要的操作比如:

    Console.writeline("你好吗");

  }

}

Ant晨曦 | 园豆:224 (菜鸟二级) | 2017-07-11 09:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册