创建对值类型字段的引用

时间:2014-09-29 22:06:39

标签: c# multithreading reference value-type

我有一个方法可以从两个不同的位置调用(称为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,而不是复制内容?

万分感谢。

1 个答案:

答案 0 :(得分:2)

一种方法是将Func<bool> amIDoneYet参数传递给您的方法,它可以用来定期查询它是否应该终止。然后,您将创建一个类似() => X的委托,以便传递给该方法。

然而,您可能需要考虑设计变更是否可以改善事物。例如,如果将其用于取消,请考虑实施Task cooperative cancellation pattern。这是实现异步任务取消的推荐标准方法。