首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 挂机 串口不住的发送命令(轮循)每个命令之间间隔50毫秒

2012-06-20 
C# 挂机 串口不断的发送命令(轮循)每个命令之间间隔50毫秒自己做了个简单的往串口不断的发送命令软件,开始

C# 挂机 串口不断的发送命令(轮循)每个命令之间间隔50毫秒
自己做了个简单的往串口不断的发送命令软件,开始挂机时是好的,
可是挂了几天之后(也就是前天)就出现白屏死锁了,还弹出线程未开始,把弹出的框点击继续。(这时候还是白屏)不管它继续挂着昨天又好了,过了一天今早来看又出现白屏死锁。这是怎么回事啊!
已经连续挂了一个多星期了,就这两天出现这样的情况。还有另外一台机子也挂着这个软件只是时间没这个长,目前没有这个情况。
我程序里用了一个定时器,定时发送alCommadl里的命令
alCommand 是ArayList里面保存了几条发送命令。
Timer1.Interval=alCommand.Count*spaceInt
void sendRce()
{
  for (int k = 0; k < alCommand.Count; k++)
  {
  Thread.Sleep(spaceInt);//spaceInt表示每个命令之间间隔秒数
  string command = sp.strToAsc(alCommand[k].ToString());
  serialport.WriteLine(command);
  send++;//发送命令个数
  }
}

定时器事件Tick()
{
  ThreadStart myTs = new ThreadStart(sendRce);//线程调用sendRce方法发送数据包
  Thread mytd = new Thread(myTs);
  mytd.Start();

}

[解决办法]
你每次都创建一个新线程,这些线程可能会产生冲突的,比如多个线程执行serialport.WriteLine,还有对sp.strToAsc(alCommand[k]的访问,你还是做好同步吧,而且你为什么要搞多个线程呢,一个线程就行了,里面循环处理命令

热点排行