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?

Foi útil?

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 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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top