Единственная причина для проверки перехватчика между каждым вызовом метода:
- Методы не должны запускаться, если подан сигнал отмены
- методы являются синхронными и требуется время для выполнения
В большинстве других сценариев ios это просто пустая трата времени и затрудняет чтение кода.
Если методы в A()
асинхронны c, прекратите чтение и используйте вместо этого токен отмены.
Если методы являются синхронными и требуют времени или должны быть прерваны, лучше просто создать конвейер, в котором каждый метод выполняется по очереди:
public static class ExecutionExtensions
{
public static void Execute(this IEnumerable<Action> pipeline, Func<bool> cancellationFunction)
{
foreach (var action in pipeline)
{
action();
if (cancellationFunction())
break;
}
}
}
Затем просто определите поток:
// Requires that the methods are in the same class
var a = new List<Action> { B, C, D, E };
И выполните его:
// interceptor must return true when the execution should be halted.
a.Execute(Interceptor);
Полный код:
public class AClass
{
private void B()
{
}
private void C()
{
}
private void D()
{
}
private bool Interceptor()
{
return false;
}
public void A()
{
var pipeline = new List<Action> { B, C, D };
pipeline.Execute(Interceptor);
}
}