我正在开发一个 WinForms 应用程序,其中有一个用户控件。用户控件中的按钮将事件引发到要由其他代码处理的表单。其中一个按钮启动一些进程,如果它们同时运行会导致问题。我在代码中有管理状态的逻辑,因此如果进程已经在运行,用户通常无法运行该进程。但是,如果用户双击该按钮,它将以如此快的速度启动该过程两次,以至于我很难阻止它。
我想知道,处理这个问题的最佳方法是什么?
我首先在单击事件中禁用按钮,但在第一次单击之前第二次单击会导致按钮被禁用。在代码中设置其他标志也没有捕捉到它。
我正在考虑在引发事件的代码上添加某种同步锁,但我想知道你们是否有更好的主意。
由于这个项目大部分已经完成,我正在寻找不涉及彻底重写应用程序(如实现复合应用程序块)的答案,但是,也可以随意发布这些想法,因为我可以在我的下一个项目中使用它们.