之前直接这样写的,但这样写时,即使按钮变成灰色,再点击后还是会触发相应事件,追究其原因是只有当这个按钮事件触发结束后才会启用Enable属性设置的值,解决方法是将执行部分在线程里运行即可。
修改之后的代码如下:
private void btnHeadXMove_Click(object sender, EventArgs e)
{
//只有当按钮事件触发结束后,Enable的效果才会可用,因此在下面使用线程执行下面程序,使其将Click事件快速结束
btnHeadXMove.Enabled = false;
Task task = Task.Run(() => { MoveAxis("W1", btnHeadXMove); });
}
private void MoveAxis(string address, Button btn)
{
omronPlcNx.WriteBool(address, true);
Thread.Sleep(1500);
omronPlcNx.WriteBool(address, false);
this.Invoke(new EventHandler(delegate { btn.Enabled = true; }));
}