C# button_click 中点击一次button,for循环执行一次,想请教一下如何能够点击一次就执行全部循环

Hanyu_Li 2018-01-10 10:28:28
private void button2_Click(object sender, EventArgs e)
{
timer1.Start();
//ushort AxisNum = 2; //插补轴数
//设置起始位置
//LTDMC.dmc_set_position(_CardID, AxisX, 0);
//LTDMC.dmc_set_position(_CardID, AxisY, 0);
for (int i = 0; i < 10; i++)
{
int j = i;
LTDMC.dmc_line_multicoor(_CardID, crd, 2, new ushort[] { AxisX, AxisY }, new Int32[] { xpos[i], xpos[j] }, Mode);
int x_pos = LTDMC.dmc_get_position(_CardID, 0);
int y_pos = LTDMC.dmc_get_position(_CardID, 1);
if ((x_pos == xpos[i]) && (y_pos == xpos[j]))
{
Thread.Sleep(300);
}
}


}
...全文
872 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
enaking 2018-01-10
  • 打赏
  • 举报
回复
有没有延迟要看 if ((x_pos == xpos[i]) && (y_pos == xpos[j]))逻辑执行情况,然后如果楼主不会断点调试,建议去学习调试再来写程序,这个是基础。
Hanyu_Li 2018-01-10
  • 打赏
  • 举报
回复
控制一个运动平台,定义了两个数组存每次走的相对距离,相当于每次走1000的距离,用for循环调用运动函数 LTDMC.dmc_line_multicoor(_CardID, crd, 2, new ushort[] { AxisX, AxisY }, new Int32[] { xpos[i], xpos[j] }, Mode);,走完一次停300毫秒,但是我每次点击按钮之后都只走1000然后停止了,等一会儿也不会继续走,再点一次再多走1000,
  • 打赏
  • 举报
回复
你是要Applicaiton.DoEvents()么? 是不是界面上没显示10次过程
  • 打赏
  • 举报
回复
点一下你事件内的代码都会执行,所以根本不明白你到底想干啥
Hanyu_Li 2018-01-10
  • 打赏
  • 举报
回复
可是我点击一次他就只执行了一次,应该是走10次,每次1000,但是每次就只走一次,300毫秒的延迟也没出现
threenewbee 2018-01-10
  • 打赏
  • 举报
回复
这就是点一次就执行全部,只是每次循环有300毫秒的延迟
x8bits 2018-01-10
  • 打赏
  • 举报
回复
可能是循环发送命令过快,运动平台丢弃掉后面那些命令。把Sleep那个if行注释掉试试
Hanyu_Li 2018-01-10
  • 打赏
  • 举报
回复
我断点调试过了,断点能循环,但是直接运行就不能
xuzuning 2018-01-10
  • 打赏
  • 举报
回复
循环里执行 Application.DoEvents();
threenewbee 2018-01-10
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
你是要Applicaiton.DoEvents()么? 是不是界面上没显示10次过程
应该就是这个意思,把它插入在sleep(300)上面

110,545

社区成员

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

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

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