自己做了个简单的往串口不断的发送命令软件,开始挂机时是好的,
可是挂了几天之后(也就是前天)就出现白屏死锁了,还弹出线程未开始,把弹出的框点击继续。(这时候还是白屏)不管它继续挂着昨天又好了,过了一天今早来看又出现白屏死锁。这是怎么回事啊!
已经连续挂了一个多星期了,就这两天出现这样的情况。还有另外一台机子也挂着这个软件只是时间没这个长,目前没有这个情况。
我程序里用了一个定时器,定时发送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();}
可是挂了几天之后(也就是前天)就出现白屏死锁了,还弹出线程未开始,把弹出的框点击继续。(这时候还是白屏)不管它继续挂着昨天又好了,过了一天今早来看又出现白屏死锁。这是怎么回事啊!
已经连续挂了一个多星期了,就这两天出现这样的情况。还有另外一台机子也挂着这个软件只是时间没这个长,目前没有这个情况。
我程序里用了一个定时器,定时发送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();}
Timer1.Interval=alCommand.Count*spaceInt
定时器事件Tick()
{
for (int k = 0; k < alCommand.Count; k++)
{
Thread.Sleep(spaceInt);//spaceInt表示每个命令之间间隔秒数
string command = sp.strToAsc(alCommand[k].ToString());
serialport.WriteLine(command);
send++;//发送命令个数
}
如果我这样写的话,发送完一组命令(alCommad.count=2)send=2,进入DataReceived事件incept=1之后再=2;而我界面上就会显示发送命令个数2、4、6、8、10 (一组一组的发送累加)
接收个数1、2、3、4、5、6、7、8、9 当我点击关闭按钮时发送个数!=接收个数,而实际上我界面上要的是发送个数 1、2、3、4、5、6、7、8、9、10
接收个数 1、2、3、4、5、6、7、8、9、10(之前的代码就是这样显示的)还有一个问题就是挂机时如果把窗体最小化,再点击,很难还原,要点击好多下或者过一段时间才能恢复。