我在做
static bool isWorking
{
get { return _isWorking; }
set {
myform.treeView1.Enabled = !value;
_isWorking = value;
}
}
并单步调试显示它在第一个设置行停止。 尝试此行后
set { myform.treeView1.Enabled = !(_isWorking = value); }
我看到isWorking已设置,但myform.treeView1.Enabled未设置。怎么回事?
答案 0 :(得分:9)
“调试器显示停止”是什么意思?是myform
可能为空,还是myform.treeView1
为空?
在这种情况下,我不记得完全评估顺序,但它可以解释您所描述的症状。知道为什么调试器“停止”是至关重要的。另一种可能性是您尝试从非UI线程访问UI,这将阻止分配给Enabled
正常工作。
哦,请不要使用你的第二个版本 - 作为副作用的任务非常非常不是一个好主意。我所知道的唯一惯用方法是使用IO循环:
string line;
while ( (line = reader.ReadLine()) != null)
我认为这是可以接受的,因为它相当普遍。在这种情况下,它看起来像你可以意味着“==”而不是“=”。
答案 1 :(得分:-2)
因为(_isWorking = value)返回true。如果你愿意写:
myform.treeView1.Enabled = !(_isWorking == value);
它的工作方式如下:如果isWorking等于value,则禁用treeView。但在你的情况下 - 没有