考虑在给定按钮的 OnClick 事件中执行的以下代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
button1.enabled := false; //Line 1
application.processmessages; //Line 2
Sleep(3000); //Line 3
button1.enabled := True; //Line 4
Release; //Line 5
end;
在 Delphi 2010 中,如果在第 3 行执行忙时单击此按钮后您设法再次单击它,则随后的单击事件显然会存储在命令队列中,因此当 Release(第 5 行)过程是调用时,应用程序将尝试处理它。因此,点击事件将再次被触发。第二次,按钮组件已经被销毁,因此引发了“访问冲突”错误。
当相应按钮被禁用时,系统确认第二次点击的整个概念似乎并不合理。对这种阴暗的行为有什么解释吗?