我有一个无法异步运行的冗长过程,因此就像在复制文件时使用资源管理器一样,我有一个进度对话框。我以模态方式显示对话框,然后执行操作(我们将其称为复制文件以使其保持抽象),更新进度对话框,并使用 Application.DoEvents() 泵送消息以保持应用程序主框架的绘制和响应。
由于对话框是模态的,用户除了观看或取消之外不能做任何事情。换句话说,他们无法选择菜单项或单击任何按钮。
我一直认为 Application.DoEvents 非常邪恶,因为您可以重新输入您不打算重新输入的代码。但在这种情况下,由于进度对话框是模态的,我看不出这是一个糟糕或危险的解决方案的原因。
我是否忽略了某些东西,或者使用 Application.DoEvents 发送消息是与模式对话框有关的合法事情?