我将提供一个简单的例子来说明我正在尝试做的事情——希望这是可能的吗?
我基本上有一门课可以对数据进行大量的格式化/分析。结果,有很多事情可能会出错。我遇到的问题是在出现问题时处理课程。一旦发生错误,我希望此类的所有执行都停止。
此类 (AnalyzingStuff) 是从基于此类执行结果执行各种操作的父窗体调用的。
理想情况下,我会触发一个名为“ABORT”的事件。
因此,在此代码中,我执行以下操作:
Class AnalyzingStuff{
public event EventHandler ABORT;
public AnalyzingStuff(){
for(int i = 0; i < 999999; i ++){
AnalyzeSomeStuff();
AnalyzerSomeOtherStuff();
}
MoreStuff();
OtherStuff();
}
private void AnalyzeSomeStuff(){
if(someconditionNotMet){
//EXIT OUT OF THIS CLASS, STOP EXECUTION!!!
this.ABORT.Invoke(this, null);
}
}
}
调用这个“ABORT”事件,我会停止这个类的执行(停止循环而不做任何其他事情)。我还可以在其他父表单中捕获此事件处理程序。不幸的是,我找不到任何停止执行此类的方法。
到目前为止的想法:
显而易见的答案是简单地设置一个标志并在多个地方反复检查这个标志,但我真的不喜欢这种方法(我当前的实现)。在每个方法调用(有很多)之后都必须检查这一点,这在代码方面是丑陋的。
我想也许是后台工作人员或您可以取消执行 DoWork 的东西?
使用表单作为 AnalyzingStuff 的基类,因此我可以简单地调用“this.Close();”。
您认为解决这种情况的最佳方法是什么?这些是最好的解决方案吗?是否有其他优雅的解决方案可以解决我想要的问题,还是我完全走错了方向?
编辑:我在整个代码中使用了一系列 try/catch 块,用于处理可能发生的不同错误。不幸的是,并非所有人都要求进行中止,因此需要立即抓住他们。因此,try/catch 不是最理想的方法.. 是吗?