覆盖C#中的Application.Doevents(),以便在调试模式下将其禁用

|| 我正在调试从vb6移植的应用程序。它的Application.Doevents到处都是乱七八糟的,除了我踏入调试器时,都很好。一旦我移过Application.DoEvents()控件,就会将其转移到某个随机区域,这取决于消息泵中待处理的内容。我如何才能在应用程序级别的某个地方优雅地重写此方法,使其工作如下(伪代码)
protected override void Application.Doevents()
{
  if (!Debugger.IsAttached)
     Application.Doevents()
}  
无需将#ifdef DEBUG \放在各处。 谢谢     
已邀请:
没有必要-或没有可能-覆盖它。 只需创建一个带有静态方法的静态类,然后将要包含的代码放入其中即可。将所有对ѭ1的调用更改为对该静态方法的调用。     
您无法覆盖它。这是一种静态方法。但是,您可以轻松编写自己的类,例如,将当前对
Application.DoEvents
的所有调用替换为
CustomApplication.DoEvents
。 (我个人认为应用程序首先要进行
DoEvents
调用不是很好,但这是另一回事。)     
  它的Application.Doevents到处都是乱七八糟的,除了我踏入调试器时,都很好。 不,那不是很好。没有附加调试器,也没有附加调试器。您提出的解决方案是错误的。您需要彻底消除它,而不仅仅是在调试模式下将其隐藏,这是最有可能引起结果错误和副作用的时候。 进行全局搜索和替换,并注释掉调用该函数的每一行。然后调试生成的代码,以找出中断的位置以及修复该错误所需的操作。 提示:不要在UI线程上执行长时间运行或占用大量CPU的任务。为此,请剥离一个单独的线程。 ѭ5组件是一种非常方便的方法,即使对于尚不愿意使用多线程的人也很舒适。
Application.DoEvents
是一个等待发生的错误。不要让它咬你。您在调试器中看到的令人沮丧的行为与应用程序代码中一直发生的事情完全相同。无论您做什么,都不要发布包含尚未完全调试的to1调用的代码。     
将替代的定义放入#ifdef DEBUG中。     

要回复问题请先登录注册