C# 监视C中的变量#

C# 监视C中的变量#,c#,multithreading,C#,Multithreading,我想知道在C#中监视变量的最佳方法是什么。这不是用于调试的。我基本上希望程序在运行过程中始终监视它自己的一个变量。 例如我试图观察a是否小于0;如果是,则程序停止 _a = _b - _c; // (_b >= _c) So _a在[0n]范围内,其中N是某个正整数; 我觉得最好是启动一个线程来监视_a值。一旦它出现,我就应该回应。但我不知道如何实施它。 有人有什么建议吗?非常感谢您提供一个简短的代码示例。您可以将此“变量”设置为类的属性,甚至将其访问权包装到用于设置值的方法中,而不

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

 _a = _b - _c; // (_b >= _c) 
So _a在[0n]范围内,其中N是某个正整数; 我觉得最好是启动一个线程来监视_a值。一旦它出现,我就应该回应。但我不知道如何实施它。 有人有什么建议吗?非常感谢您提供一个简短的代码示例。

您可以将此“变量”设置为类的属性,甚至将其访问权包装到用于设置值的方法中,而不是尝试监视此变量中的值

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

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

private int _a;
public void SetA(int value)
{
    if (value < 0)
    { 
        // Stop program?
     }
    _a = value;
}
我之所以喜欢这种方法,是因为它有一个明显的、戏剧性的副作用,并且期望属性设置器能够快速操作。然而,从技术角度来看,属性设置器也同样有效

地产也可以做同样的事情:

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

        _a = value;
    }
}
private int\u a;
公共INTA
{
获取{return\u a;}
设置
{
如果(值<0)
{
//根据需要处理
}
_a=数值;
}
}

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

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

 private int _a;

 public int MyA {
  get{
    return _a;
  }
  set {
    _a = value;
  }
 }
你应该调查这件事


请参阅和。

程序在低于0时停止的原因是什么?使用unsigned int可以解决这个问题吗?如果你只想调试程序中的一些bug,那么看看这个问题:不,我不想调试。正在运行程序期间尝试监视变量。我将编辑我的原始帖子以使其更清晰。类似于:public int A{get{return}A;};set{u A=value;};}?
 private int _a;

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