我有一个方法可以从两个不同的位置调用(称为loc A和loc B)。在那个方法中,我有一个while循环,只要特定的bool为真就运行(称之为running
)。
棘手的是,如果从loc A调用该方法,则该bool变量应该引用bool-X。如果从loc B调用它,则bool应该指bool-Z。 X和Z在另一个类中定义,并且全局可用。
您可以想象,仅设置running = locIsA ? GetBoolA : GetBoolB;
将不起作用,因为running
会被修复,而当程序的其他部分更改A或B时,running
将不会受到影响。
如何根据条件将running
设置为bool-A或bool-B,而不是复制内容?
万分感谢。
答案 0 :(得分:2)
一种方法是将Func<bool> amIDoneYet
参数传递给您的方法,它可以用来定期查询它是否应该终止。然后,您将创建一个类似() => X
的委托,以便传递给该方法。
然而,您可能需要考虑设计变更是否可以改善事物。例如,如果将其用于取消,请考虑实施Task cooperative cancellation pattern。这是实现异步任务取消的推荐标准方法。