在C#中监视变量

时间:2013-02-26 19:29:14

标签: c# multithreading

我想知道在C#中监视变量的最佳方法是什么。这不是用于调试。我基本上希望它自己的程序在运行期间一直监视它的一个变量。 例如。我想看看_a是否小于0;如果是,则程序停止。

 _a = _b - _c; // (_b >= _c) 

所以_a在[0 N]范围内,其中N是一些正int; 我觉得最好是启动一个监视_a值的线程。一旦它,那么我应该回应。但我不知道如何实现它。 有人有什么建议吗?一小段代码示例将受到高度赞赏。

3 个答案:

答案 0 :(得分:5)

您可以将此“变量”作为类的属性,或者将其访问权限包装到设置值的方法中,而不是尝试监视此变量中的值。

通过使用属性或方法,您可以将自定义逻辑注入属性设置器,该设置器可以执行任何操作,包括“停止程序”。

就个人而言,如果目标是停止该计划,我会使用一种方法:

private int _a;
public void SetA(int value)
{
    if (value < 0)
    { 
        // Stop program?
     }
    _a = value;
}

然后致电:

yourClass.SetA(_b - _c);

我更喜欢一种方法的原因是它具有明显的,戏剧性的副作用,并且期望一个属性设置器将是一个快速操作。但是,从技术角度来看,属性设置器也可以正常工作。

财产可以做同样的事情:

private int _a;
public int A
{
    get { return _a; }
    set
    {
        if (value < 0)
        {
            // Handle as needed
        }

        _a = value;
    }
}

答案 1 :(得分:2)

最好的方法是使用属性封装变量。

使用此方法,您可以使用自定义逻辑扩展属性的setter,以验证值,记录变量的变化或变量/属性已更改的通知(事件)。

 private int _a;

 public int MyA {
  get{
    return _a;
  }
  set {
    _a = value;
  }
 }

答案 2 :(得分:0)