Domanda

che sto facendo

static bool isWorking
    {
        get { return _isWorking; }
        set {
            myform.treeView1.Enabled = !value;
            _isWorking = value;
        }
    }

e passando attraverso il debugger mostra ferma alla prima linea set. Dopo aver provato questa linea al posto

set { myform.treeView1.Enabled = !(_isWorking = value); }

Vedo che isWorking è impostato ma non è myform.treeView1.Enabled. Che cosa sta succedendo?

È stato utile?

Soluzione

Che cosa si intende per "il debugger mostra si ferma"? E 'forse che myform è nullo, o myform.treeView1 è nullo?

Non riesco a ricordare il esattamente ordine di valutazione in questo caso, ma potrebbe spiegare i sintomi si sta descrivendo. Sapere perché il debugger "ferma" è fondamentale però. Un'altra possibilità è che si sta cercando di accedere all'interfaccia utente da un thread non-UI, che impedirebbe il compito di Enabled di funzionare correttamente.

Oh, e vi prego di non utilizzare il seconda versione - incarico come un effetto collaterale è molto, molto raramente una buona idea. L'unico uso idiomatico che so è quando loop con IO:

string line;
while ( (line = reader.ReadLine()) != null)

e considero solo accettabile, perché è abbastanza comune. In questo caso sembra proprio che si potrebbero significa "==" anziché "=".

Altri suggerimenti

A causa (_isWorking = valore) restituisce sempre true. Se si può scrivere:

myform.treeView1.Enabled = !(_isWorking == value);

Funziona come: se isWorking è uguale al valore quindi disattivare TreeView. Ma in voi caso - nessun

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top