Pergunta
Estou fazendo
static bool isWorking
{
get { return _isWorking; }
set {
myform.treeView1.Enabled = !value;
_isWorking = value;
}
}
e percorrendo os shows depurador pára na primeira linha set. Depois de tentar essa linha em vez
set { myform.treeView1.Enabled = !(_isWorking = value); }
Eu vejo que isWorking é conjunto, mas myform.treeView1.Enabled não é. O que está acontecendo?
Solução
O que você quer dizer com "os shows depurador ele pára"? É, possivelmente, que myform
é nulo, ou myform.treeView1
é nulo?
Eu não consigo lembrar o exata ??em> ordem de avaliação, neste caso, mas poderia explicar os sintomas que você está descrevendo. Saber por que o depurador "pára" é, porém crucial. Outra possibilidade é que você está tentando acessar a interface do usuário de um thread não-UI, o que impediria a atribuição para Enabled
de funcionar adequadamente.
Ah, e por favor, não use sua segunda versão - atribuição como um efeito colateral é muito, muito raramente uma boa idéia. O uso somente idiomática que eu sei é quando looping com IO:
string line;
while ( (line = reader.ReadLine()) != null)
e eu só considero que aceitável porque é razoavelmente comum. Neste caso, ele realmente parece que você poderia média "==" em vez de "=".
Outras dicas
Porque (_isWorking = valor) Devolve sempre é verdade. Se você escreveria:
myform.treeView1.Enabled = !(_isWorking == value);
Ele funciona assim: se isWorking é igual ao valor, em seguida, Desativar TreeView. Mas no seu caso - não