为什么Visual Studio无法在这个简单的C#属性上设置条件断点?

时间:2011-11-17 05:21:44

标签: c# visual-studio-2010 debugging visual-studio-debugging

在我的C#对象中,我在此属性的setter中设置了条件为value == "Status"的条件断点。通常它用PostSharp方面装饰,但我在这种情况下评论过,它仍然有问题。

public virtual string Name
{
    get
    {
        return _name;
    }
    set
    {
        _name = value; // breakpoint here
    }
}

第一次执行到达断点时,VS显示错误:

Visual Studio MessageBox

编辑 - 对于可搜索性,信息如下:

  

无法设置以下断点:

     

在(文件).cs,第137行第17行('(class).Name',第12行),当'value ==“Status”'为真时

     

功能评估需要运行所有线程。

这是Threads窗口的样子:

Debugger Threads window

之前有人见过这个,或者有什么想法可能会导致调试器对这个看似简单的案例感到不满?它可能与睡眠线程有关吗?

3 个答案:

答案 0 :(得分:1)

当我遇到基本线程执行失败的情况时,我曾遇到过这个问题。有关应用程序流程的更多信息将有所帮助。在我看来,这似乎是一种竞争条件。

答案 1 :(得分:1)

我最终设计了一种解决方法:

public virtual string Name
{
    get
    {
        return _name;
    }
    set
    {
        if (value == "Status")
            DoSomeNoOp(); // Breakpoint here, or Debug.Fail() inside your no-op

        _name = value;
    }
}

答案 2 :(得分:0)

我认为它不知道value是什么。尝试将断点放在结束}上并在条件中使用_name