写一个WPF项目,出现:System.StackOverflowException,不知道怎么解决

jacklikeaccp 2011-07-19 12:04:23

//选择连接的设备,USB口或 串口
public void ChooseDevice() {
//如果能读取机器的版本号,则不打开串口
Timer timerUSB = new Timer();//创建一个Timer控件,实时读取数据
timerUSB.Enabled = true;
timerUSB.Interval = 1000;
byte[] byteV = new byte[10];
int VRet = MiReader.GetVersionNum(byteV);//读取设备版本号
string strV = "";
for (int i = 0; i < byteV.Length; i++)
{
strV += string.Format("{0:x2}", byteV[i]);
}
if (strV == "7265616465722d73667a")
{
timerUSB.Tick += new System.EventHandler(timerUSB_Tick);
}
//读取串口设备数据
else
{
OpenSerialPort();
}
}
//USB口设备,循环读取设备数据
private void timerUSB_Tick(object sender, EventArgs e)
{
byte[] byteuid = new byte[8];
byte[] byteBuffer = new byte[8];

int nRet = MiReader.TYPEB_SFZSNR(26, 0, byteuid, byteBuffer);
if (nRet != 0)
{

}
else
{
string strText = "";
for (int i = 0; i < byteBuffer.Length; i++)
{
strText += string.Format("{0:x2}", byteBuffer[i]);
strText = strText.ToUpper();
}
SendMess(strText.ToString());
}
}

程序启动时,从两个设备中选取一个,如果设备版本号为‘7265616465722d73667a’,启用第一个设备,else启用第二个设备。
数据也能读取,但是不能点击程序的任何一个按钮,一点击就报‘System.StackOverflowException’。
望高手解决
...全文
404 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jacklikeaccp 2011-07-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fangxinggood 的回复:]

还有好多代码没看到啊。另外,ChooseDevice 每次调用就创建一个Timer是不是太浪费了?
[/Quote]
我怀疑是我的.NET库出了问题。待会重装一下试试看。
jacklikeaccp 2011-07-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fangxinggood 的回复:]

还有好多代码没看到啊。另外,ChooseDevice 每次调用就创建一个Timer是不是太浪费了?
[/Quote]
ChooseDevice方法只调用了一次。所以并不是创建了N个Timer,另外,我用窗体应用程序创建了一个测试项目。结果能正常运行。两个设备可以同时应用。
xiajian19820809 2011-07-19
  • 打赏
  • 举报
回复
想想想
机器人 2011-07-19
  • 打赏
  • 举报
回复
还有好多代码没看到啊。另外,ChooseDevice 每次调用就创建一个Timer是不是太浪费了?
xuexiaodong2009 2011-07-19
  • 打赏
  • 举报
回复
任何一个按钮

不知道你的代码怎么写的

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧